# 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.
# Custom Measures
Source: https://docs.upstackdata.com/analytics/custom-measures
Build your own metrics and KPIs in Upstack Analytics with a formula editor — combine revenue, spend, and order measures into custom ratios you can chart on any dashboard.
Custom measures let you define your own metric from a formula over the measures Upstack already tracks — without waiting on an engineering change. Combine revenue, spend, orders, and other measures with arithmetic to create the KPI your team actually reports on, such as net margin %, profit per order, or a blended efficiency ratio.
A custom measure behaves exactly like a built-in measure. It respects the dashboard's filters, date range, comparison period, and granularity, and it picks up your cost adjustments — so the number stays consistent with the rest of your report.
## How custom measures work
A custom measure is a formula written over existing **base measures**. Upstack compiles that formula and computes it on the same engine that powers built-in ratio measures like ROAS and MER, so the result is calculated server-side against your data — not approximated in the browser.
For example, this formula defines your marketing efficiency ratio (MER) — total revenue earned per dollar of ad spend:
```text theme={null}
orders.total_revenue / channel.spend
```
Each operand (`orders.total_revenue`, `channel.spend`) is a base measure you select from a picker, so you never have to remember exact names. Set the format to **Multiplier** and the result displays as `3.2×`.
## 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, matching the permissions for cost settings. 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., `Marketing Efficiency Ratio`) and an optional **Short title** (e.g., `MER`) 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 measure rolls up across the selected date range in the summary card:
* **Sum** — adds each period's value (use for additive measures like revenue net of ad spend).
* **Average** — recomputes the ratio over the whole period (use for ratios and percentages like MER or ad spend %).
Upstack infers a sensible default from your formula; override 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 |
| -------------------------------- | ------------------------------------------ | ---------- |
| Marketing efficiency ratio (MER) | `orders.total_revenue / channel.spend` | Multiplier |
| Ad spend as % of net revenue | `channel.spend / orders.net_revenue * 100` | Percentage |
| Net revenue after ad spend | `orders.net_revenue - channel.spend` | Currency |
| Ad cost per order | `channel.spend / orders.count` | Currency |
`orders.net_revenue` is net sales (after discounts and refunds) but **before** COGS and operating costs — so `orders.net_revenue - channel.spend` is revenue net of ad spend only, not true profit. To build a margin metric that reflects fulfillment and operating costs, include the relevant cost measures from the picker and make sure your [cost settings](/get-started/cost-settings) are configured.
Division by zero returns 0, and any base measure with no data in a period is treated as 0. This keeps charts continuous instead of showing gaps or errors.
## Using a custom measure 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 on a custom dashboard. Select it like any built-in measure — it works with Metric, Sparkline, Bar, and Area chart types.
Because it runs on the same query path as built-in measures, the widget automatically reflects the dashboard's current filters, date range, comparison period, and granularity. No extra configuration is needed.
## What custom measures inherit
Custom measures reuse the standard query engine, so they pick up the same context as built-in measures automatically:
* **Filters** — applied per source so each operand is filtered correctly (an orders filter only affects orders measures, an ads filter only affects ad measures).
* **Date range, comparison period, and granularity** — threaded through unchanged.
* **Cost adjustments** — formulas that reference cost-adjusted measures are recomputed against your contribution-margin settings, matching how built-in cost measures behave. See [Cost settings](/get-started/cost-settings).
## Limitations
Custom measures are designed to behave like built-in measures, which sets a few boundaries in this version:
* **Base measures only.** Operands must be measures available in the picker. You can't reference already-derived measures (such as ROAS or MER), attribution-only measures, or another custom measure.
* **Not attribution-adjusted.** Like other non-attribution measures on the dashboard, custom measures are not adjusted by attribution model or window. For attribution analysis, use [Attribution reporting](/analytics/attribution-reporting).
* **Custom dashboards only.** Custom measures are selectable on custom dashboards; they aren't yet available in other surfaces.
## 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. `fixedRateAmount` is
required when `method=fixed_rate`.
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`.
# Send server-side events
Source: https://docs.upstackdata.com/api-reference/events/send-server-side-events
/api-reference/openapi.yaml post /tr/api/events
Send a batch of tracking events from your server. Each event is turned into
Upstack's canonical event and processed exactly like a pixel event — identity
resolution, enrichment, analytics, and real-time forwarding to your destinations.
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**. Within
event data: strings up to **1024** chars, arrays up to **100** items, objects up to
**50** keys (key names up to **64** chars), nested up to **4** levels deep.
**Required scope:** `events:write`.
# API Overview
Source: https://docs.upstackdata.com/api-reference/overview
Programmatic access to your Upstack Data pixel — authentication, base URLs, scopes, error format, 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.
## Error format
Errors are JSON responses with a `message` field and the appropriate status code.
```json theme={null}
{
"message": "API key does not have the dashboards:write scope"
}
```
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 **Send server-side events** for the
full shape.
| 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). |
| `500` | Server error. Retry; if persistent, file a support ticket with the request id. |
## 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`.
# 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**.
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.
If you only see plan options and no cancel link, you're on Shopify billing. Follow Step 2 below.
***
## 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**.
Find **Upstack Data** in the list of installed apps.
Click the three-dot menu next to the app name, click **Uninstall**, and confirm when prompted.
***
## 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**.
If you see a red **Cancel** button, you're on Stripe (direct) billing.
If you only see plan options and no cancel link, you're on 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**.
Click **Payment Methods**.
Click **Add Payment Method** and enter your 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**.
## 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**.
Click the **Billing History** tab to see all of your 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/overview) 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/overview), 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` |
## Examples
```bash theme={null}
upstack config set timezone America/New_York
upstack config set output table
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": {
"baseUrl": "...",
"apiKey": "upstack_...",
"pixelId": "...",
"defaults": { "timezone": "America/New_York", "output": "table" }
}
}
}
```
# 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/overview) 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 / handling fee applied to product variants that have no per-variant COG line. 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` is required when `--method=fixed_rate`.
**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/overview) 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/overview) 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 |
| --------------------------------------------------- | ---------------------------------------------------- | ------------------- |
| `--chart-types ` | One chart type per measure (positional pairing). | `sparkline` for all |
| `--type ` | `view`, `attribution_view`, or `pnl_view`. | `view` |
| `--layout ` | Auto-layout strategy. Only `kpi-grid` today. | `kpi-grid` |
| `--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. | `New Section` |
| `--position top\|bottom` | Where to insert among non-pinned sections. | `bottom` |
| `--after ` | Insert immediately after this section (overrides `--position`). | |
### section rename / clone / delete
```bash theme={null}
upstack dashboard view section rename 5f1e6a4f-... --title "Renamed"
upstack dashboard view section clone 5f1e6a4f-...
upstack dashboard view section delete 5f1e6a4f-...
```
`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-... --to 0
```
### section collapse / expand / hide / unhide
Toggle the display state of a section.
```bash theme={null}
upstack dashboard view section collapse 5f1e6a4f-...
upstack dashboard view section expand 5f1e6a4f-...
upstack dashboard view section hide 5f1e6a4f-...
upstack dashboard view section unhide 5f1e6a4f-...
```
`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-... --mode auto
upstack dashboard view section layout 5f1e6a4f-... --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-... --density compact
upstack dashboard view section density 5f1e6a4f-... --density inherit
upstack dashboard view section pacing 5f1e6a4f-... --enabled
upstack dashboard view section pacing 5f1e6a4f-... --disabled
upstack dashboard view section pacing 5f1e6a4f-... --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-... --to
```
### 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-...
# 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-...
```
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 ` | Filter by keyword (matches the dimension key). |
| `--category ` | 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/overview).
## 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 ` | 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/`. The CLI doesn't send history anywhere — it's purely a convenience for you.
## Usage
```bash theme={null}
upstack history # last 20 entries
upstack history --show # inspect a single entry
upstack history --rerun # re-run a previous query
upstack history --clear # delete all entries
```
## Flags
| Flag | Description |
| -------------- | ----------------------------------------------------------------------------------------------------- |
| `--show ` | Print the full parameters and result for one history entry. |
| `--rerun ` | Re-run a previous query with the same parameters. Useful for "what did yesterday look like, exactly?" |
| `--clear` | Delete all history entries. No confirmation. |
| `--limit ` | Number of recent entries to list. Default `20`. |
# 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/overview). 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 ` on any command. See [Profiles](/cli/profiles) for the full reference.
# 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/overview).
## Usage
```bash theme={null}
upstack measures
```
Results are cached locally for 1 hour. Pass `--no-cache` to refetch.
## Flags
| Flag | Description |
| ------------------- | ------------------------------------------------------------------------------- |
| `--search ` | Filter by keyword (matches `key`, `title`, and `shortTitle`). |
| `--category ` | 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/overview) 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 ""
```
`--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. Must be `>= 0`.
```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 ` 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.
## 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:
```json theme={null}
{
"profiles": {
"default": { "baseUrl": "...", "apiKey": "upstack_...", "pixelId": "..." },
"staging": { "baseUrl": "...", "apiKey": "upstack_...", "pixelId": "..." }
}
}
```
# 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/overview).
## 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 ` | Comma-separated canonical measure ids (see [`upstack measures`](/cli/measures)). |
| `--granularity ` | `none`, `second`, `minute`, `hour`, `day`, `week`, `month`, `quarter`, or `year`. |
| `--date-start ` `--date-end ` | Date range. |
## Optional flags
| Flag | Description | Default |
| ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------- |
| `--dimensions ` | Comma-separated dimension ids. Max 5. | |
| `--filter ` | Canonical [Filter](/cli/filters) as JSON. See the [Filters](#filters) section below for the shape. | |
| `--compare-start ` `--compare-end ` | Optional comparison period. Must not overlap the primary date range. | |
| `--timezone ` | IANA timezone (e.g. `America/New_York`). | `UTC` |
## 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 ` | `json`, `table`, or `csv`. | `json` |
| `--file ` | Write output to a file instead of stdout. | |
| `--from-file ` | 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/overview).
## 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 ` | Dimension to attribute by (e.g. `utm_source`, `utm_campaign`). |
| `--model ` | `first_click`, `last_click`, or `any_click`. |
| `--window ` | Attribution window. One of `1`, `7`, `14`, `30`, `60`, `90`, `-1` (unlimited). |
| `--date-start ` `--date-end ` | Date range. |
## Optional flags
| Flag | Description | Default |
| --------------------------- | ------------------------------------------------------------------------------------------------------------ | ---------- |
| `--filter ` | Canonical [Filter](/cli/query#filters) as JSON. `attribution.utm_*` fields and `orders.*` fields apply here. | |
| `--timezone ` | IANA timezone. | `UTC` |
| `--value-source ` | `orders` or `events`. | `orders` |
| `--conversion-event ` | Required when `--value-source=events`. | `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/overview).
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 ` | `hour`, `day`, `week`, `month`, or `year`. |
## Optional flags
| Flag | Description | Default |
| ----------------------------------------------------- | -------------------------------------------------------------------------------------- | ----------------- |
| `--dimensions ` | `campaign`, `adset`, or `ad`. Omit for account grain. | (account) |
| `--date-start ` `--date-end ` | Date range. Required together with `--measures` (entity-list-only when absent). | |
| `--measures ` | Comma-separated measure ids (e.g. `channel.spend`, `channel.impressions`, `meta.cpm`). | |
| `--filter ` | Canonical [Filter](/cli/filters) as JSON. | |
| `--timezone ` | IANA timezone. | `UTC` |
| `--limit ` | Max rows returned (1–500). | `50` |
| `--offset ` | Skip the first N rows. | `0` |
| `--sort-by ` | One of `sourceUpdatedAt`, `sourceCreatedAt`, `resourceName`. | `sourceUpdatedAt` |
| `--sort-direction ` | `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":""}]}'
# 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":""}]}'
```
## 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/overview).
## 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 ` | One or more cohort-specific measure ids. |
| `--granularity ` | `week`, `month`, or `year`. |
| `--date-start ` `--date-end ` | 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 ` | Canonical [Filter](/cli/query#filters) as JSON. `orders.*` fields apply in this context. | |
| `--timezone ` | IANA timezone. | `UTC` |
See [`upstack query`](/cli/query#shared-flags) for the shared output / interactive / from-file flags.
## 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 `
```bash theme={null}
upstack saved create morning-report --command query --from-file ./params.json
```
| Flag | Description |
| ---------------------- | --------------------------------------------------------------------------------------- |
| `--command ` | Required. One of `query`, `query-attribution`, `query-cohort`, `query-channel-details`. |
| `--from-file ` | JSON file with the query parameters. |
| `--description ` | Optional description for the saved query. |
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.
Run [`upstack filters --detail`](/cli/filters) to discover valid filter fields before constructing a `--filter` value.
### `list`
```bash theme={null}
upstack saved list
```
### `show `
Inspect a saved query without running it.
```bash theme={null}
upstack saved show morning-report
```
### `run `
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
```
### `delete `
```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.
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.
## 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. |
Walk through the Upstack Analytics dashboard and its key reports.
Learn how Upstack ID builds the unified customer journey that attribution depends on.
# 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.
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.
## 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. |
Connect Upstack Signal to Meta's Conversions API step by step.
See all supported forwarding destinations and their configuration options.
# 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.
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.
## 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. |
See how enriched events improve signal quality when forwarded to ad platforms.
Understand the identity layer that enrichment depends on.
# 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
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.
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.
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/meta-capi) or [Google Ads](/destinations/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 |
GA4 is no longer a supported destination for new connections and is being deprecated.
## 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/shopify)** | Orders, revenue, products, customer data, refunds | Revenue attribution, order-level reporting, customer classification (new vs returning) |
| **[Facebook Ads (Meta)](/sources/facebook-ads)** | Campaign spend, impressions, clicks, campaign/ad set/ad structure | ROAS calculation, spend-to-revenue comparison, campaign-level attribution |
| **[Google Ads](/sources/google-ads)** | Campaign spend, impressions, clicks, campaign structure | ROAS calculation, spend-to-revenue comparison, campaign-level attribution |
| **[TikTok](/sources/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:
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.
Upstack pulls your daily ad spend, campaign structure, and performance metrics from Meta, Google, TikTok, and Shopify.
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.
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:
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](/get-started/connect-a-destination) for the step-by-step.
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.
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.
## Common confusion
Connecting Facebook as a **destination** ([Meta CAPI](/destinations/meta-capi)) only sets up event sending. You also need to connect [Facebook Ads as a source](/sources/facebook-ads) to pull in spend and campaign data for your attribution dashboard.
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).
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.
## Frequently asked questions
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.
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.
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.
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.
## Related
Every supported destination and its configuration options.
Every supported data source and how each one is connected.
Step-by-step setup for your first destination.
How Upstack combines event data and spend data to attribute revenue.
A focused deep-dive on destinations.
A focused deep-dive on sources.
# 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.
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.
**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.
## 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.
Need help setting up quiz events, understanding custom event data, or configuring upsell tracking? Reach out to our support team.
## Related guides
Set up the Upstack Data tracking pixel on your Shopify store.
Forward upsell and purchase events to Meta, TikTok, and other ad platforms.
Learn how to send custom events like quiz completions and leads.
Understand all standard events Upstack tracks, including Purchase and Upsell Purchase.
# 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.
Understanding the pipeline architecture helps you diagnose where data quality issues originate and how each Upstack product contributes to your marketing data stack.
## 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. |
Deep dive into the Capture stage.
Deep dive into the Resolve stage.
Deep dive into the Enrich stage.
Deep dive into the Activate stage.
Deep dive into the Understand stage.
Get started with the first pipeline stage.
# 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.
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).
## 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. |
Get server-side tracking running on your Shopify store in under 10 minutes.
See every event Upstack Pixel captures and its schema.
# 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.
During onboarding, Upstack automatically detects your timezone from your Shopify store (if connected) or your browser. You can change it anytime in Settings.
## 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.
Your data is stored internally in UTC for accuracy and consistency. The timezone setting only controls how that data is displayed to you.
## 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
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.
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.
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.
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.
Understand how Upstack Data attributes revenue to marketing touchpoints.
Learn how to query and analyze your marketing data.
# 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).
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.
## 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.
Need a metric that isn't listed here? Build your own from a formula over these measures with [Custom Measures](/analytics/custom-measures).
| 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 |
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.
## 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` |
**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.
### 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 |
Learn how to build queries, set date ranges, and apply filters.
Explore session-level and page-level metrics in detail.
Define your own metrics and KPIs from a formula over these measures.
# AppLovin Axon
Source: https://docs.upstackdata.com/destinations/applovin
Send conversion events to AppLovin's Axon Conversions API for mobile and web advertising attribution — improving campaign optimization and match quality.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## What it does
AppLovin's Axon Conversions API is the server-side counterpart to the Axon Pixel. Upstack Signal forwards storefront events — page views, product views, add-to-carts, checkouts, and purchases — directly to AppLovin's servers, bypassing browser restrictions like ad blockers, ITP, and cookie limits.
Server-side delivery gives AppLovin'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 `aleid` click identifier when available.
AppLovin uses **token-based auth** instead of OAuth. You'll paste a Pixel ID (Event Key) and a Conversions API access token into the Upstack destination — there is no OAuth handshake to step through.
## How it works
Upstack runs as a dual-tracking layer alongside the Axon 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 Axon Conversions API as a server-side event with a shared `dedupe_id`.
AppLovin deduplicates server events against matching browser Pixel events using that `dedupe_id`, so you do not double-count conversions as long as both sources use the same Pixel ID. PII (`email`, `phone`) is auto-hashed by Axon via SHA-256, though Upstack pre-hashes for consistency.
**Critical:** The `dedupe_id` field is REQUIRED for all server-side events. Events without a `dedupe_id` are rejected by the API. Additionally, if any single event in a batch is invalid, the entire batch is dropped with HTTP 400.
## Setup guides
End-to-end walkthrough for connecting AppLovin to Upstack Data.
Configure the AppLovin Axon destination inside Upstack Data.
Locate your Axon Pixel ID (Event Key) in the AppLovin dashboard.
Generate the Conversions API access token Upstack uses to send events.
## Event mapping
Upstack maps storefront events to AppLovin Axon standard events automatically:
| Upstack event | AppLovin event | Key parameters | Notes |
| ------------------ | ------------------ | ----------------------------------------------------- | ---------------------------- |
| `PageView` | `page_view` | `url`, `referrer` | Every page navigation |
| `ViewContent` | `view_item` | `items`, `value`, `currency` | Product detail page |
| `AddToCart` | `add_to_cart` | `items`, `value`, `currency` | `quantity` required per item |
| `RemoveFromCart` | `remove_from_cart` | `items`, `value`, `currency` | `quantity` required per item |
| `InitiateCheckout` | `begin_checkout` | `items`, `value`, `currency` | All fields required |
| `AddPaymentInfo` | `add_payment_info` | `payment_type`, `value`, `currency` | Recommended event |
| `Purchase` | `purchase` | `transaction_id`, `value`, `tax`, `shipping`, `items` | All fields required |
| `Search` | `search` | `search_term` | `search_term` required |
| `Lead` | `generate_lead` | `value`, `currency` | Both fields required |
| `SignUp` | `sign_up` | `method` | `method` recommended |
| `Subscribe` | `subscribe` | `value`, `currency` | Recommended event |
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
Open the AppLovin Axon Dashboard, navigate to your pixel's Events section, and check for recent events. Server-side events appear within 5–10 minutes of storefront activity. Upstack also surfaces delivery status inside the destination settings.
No — as long as the Pixel ID in Upstack matches the Pixel ID firing in your storefront's Axon browser Pixel. Upstack sends a shared `dedupe_id` on every server-side event, and AppLovin's deduplication logic matches events by `dedupe_id` and keeps only one.
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 server-side match keys.
The AppLovin Conversions API token is generated from your Axon Dashboard under Account → General → Keys. Upstack only needs permission to send events — no management or spending permissions are required.
A 400 response means the batch was rejected. AppLovin drops the **entire batch** if any single event is invalid. Common causes:
* **Missing `dedupe_id`** — this field is REQUIRED on every server-side event
* **Missing user identifier** — at least one of `aleid`, `axwrt`, `client_id`, `email`, `phone`, or `user_id` must be provided
* **Invalid field format** — check that `event_time` is in milliseconds, `currency` is ISO 4217, etc.
## Troubleshooting
If events aren't appearing after 10 minutes of confirmed store traffic, check the basics first.
**Steps to fix:**
1. Go to **Integrations → Destinations → AppLovin**
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 the Axon Dashboard and update the destination
AppLovin's batch API drops the entire batch if any single event is invalid.
**Steps to fix:**
1. Check CloudWatch logs for the specific validation error message
2. Verify all events include a `dedupe_id` (REQUIRED)
3. Verify all events include at least one user identifier
4. Check for malformed field values (timestamps, currencies, item arrays)
5. If one event type consistently fails, review its field mapping
The Conversions API key was rejected.
**Steps to fix:**
1. Log into the AppLovin Dashboard
2. Navigate to Account → General → Keys
3. Generate a new Conversions API key
4. Update the key in your Upstack destination settings
5. Wait 5 minutes for the new key to propagate
For additional troubleshooting beyond AppLovin-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
## Related
How Upstack Signal forwards events to ad platforms via server-to-server APIs.
How Upstack matches anonymous visitors to known customers for higher match rates.
Set up Meta's Conversions API as another server-side destination alongside AppLovin.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Attentive
Source: https://docs.upstackdata.com/destinations/attentive
Forward identity-resolved customer events and profiles to Attentive to power SMS marketing automation, abandoned cart recovery, and personalized text messaging campaigns.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
Attentive is connected through **Upstack Flows**, the product that handles event delivery to marketing automation platforms. The key value: Upstack identifies visitors that Shopify and Attentive's native integrations miss — turning anonymous browse and cart abandonment sessions into actionable SMS triggers with phone numbers and emails attached. This means more abandoned cart SMS flows fire, more browse abandonment messages send, and you recover revenue through personalized text messaging.
## 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 Attentive using your API key as a custom event that can trigger SMS journeys.
4. Attentive matches the email to existing subscribers and triggers the appropriate SMS flows.
The result: abandoned cart and browse abandonment SMS journeys fire for visitors that Shopify's native tracking misses.
## Event Mapping
| Upstack Event | Attentive Event | Key Properties | Notes |
| ------------------ | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
| `PageView` | `Page Viewed - Upstackified` | `productId`, `productUrl`, `name` | Tracks page visits with product context |
| `ViewContent` | `Product Viewed - Upstackified` | `productId`, `productVariantId`, `productImage`, `productUrl`, `name`, `price`, `currency` | Powers browse abandonment SMS flows |
| `AddToCart` | `Product Added to Cart - Upstackified` | `productId`, `productVariantId`, `productImage`, `productUrl`, `name`, `price`, `currency`, `quantity` | Powers abandoned cart SMS flows |
| `InitiateCheckout` | `Checkout Started - Upstackified` | `productId`, `productUrl`, `name`, `price`, `currency`, `quantity` | Powers checkout abandonment SMS flows |
| `AddShippingInfo` | `Added Shipping Info - Upstackified` | `productId`, `productUrl`, `name`, `price`, `currency` | Tracks checkout progress |
| `AddPaymentInfo` | `Added Payment Info - Upstackified` | `productId`, `productUrl`, `name`, `price`, `currency` | Tracks payment step |
| `Purchase` | `Product Purchased - Upstackified` | `productId`, `productVariantId`, `productImage`, `productUrl`, `name`, `price`, `currency`, `quantity`, `brand`, `tags` | Powers post-purchase SMS and win-back flows |
Upstack sends events as custom events to Attentive's API. The `- Upstackified` suffix distinguishes Upstack-enriched events from native Attentive tracking, allowing you to run parallel journeys or A/B test performance.
## Set Up Attentive
### Prerequisites
* An active Attentive account with API access
* An Attentive API key with permission to create custom events
### Step 1: Generate Your Attentive API Key
1. Log in to your Attentive dashboard
2. Navigate to **Settings** → **API Keys**
3. Click **Create API Key**
4. Give it a descriptive name like "Upstack Data Integration"
5. Copy the API key — you'll need it in the next step
Store your API key securely. You won't be able to view it again after creation.
### Step 2: Add Attentive Destination in Upstack
1. Open the [Upstack Data Dashboard](https://app.upstackdata.com)
2. Navigate to **Destinations** in the sidebar
3. Click **Add Destination** and select **Attentive**
4. Paste your Attentive API key
5. Click **Save** to activate the destination
### Step 3: Verify Events Are Flowing
1. Trigger a test event on your store (view a product, add to cart)
2. In Attentive, check **Analytics** → **Events** for incoming Upstackified events
3. Verify the event contains the expected properties (product info, user email)
## Use Cases
### Abandoned Cart SMS Recovery
When a visitor adds items to their cart and leaves without purchasing:
1. Upstack captures the `AddToCart` event
2. Identity resolution matches the session to a known subscriber
3. Attentive receives `Product Added to Cart - Upstackified` with the subscriber's email
4. Your Attentive abandoned cart journey triggers, sending a personalized SMS with the cart contents
### Browse Abandonment SMS
When a visitor views products but doesn't add to cart:
1. Upstack captures `ViewContent` events
2. Identity resolution identifies the visitor
3. Attentive receives `Product Viewed - Upstackified`
4. Your browse abandonment journey sends a follow-up SMS featuring the viewed products
### Post-Purchase SMS Flows
When a customer completes a purchase:
1. Upstack captures the `Purchase` event with full order details
2. Attentive receives `Product Purchased - Upstackified`
3. Post-purchase journeys trigger — order confirmation, shipping updates, review requests, or cross-sell recommendations
## FAQ
Attentive's native Shopify integration only sees visitors that Shopify has identified — typically logged-in customers or shoppers who have entered contact information. Upstack's identity resolution matches anonymous sessions to known subscriber profiles using cookies, click IDs, and cross-session behavioral data, then sends those events to Attentive with the contact's email attached. This lets your SMS journeys fire for many more visitors.
Upstack events use the `- Upstackified` suffix to distinguish them from native Attentive events. You can run both integrations in parallel and build separate journeys that trigger on Upstackified events. Alternatively, disable overlapping events in Attentive's native integration to avoid duplicates.
The Attentive API key must have permission to create custom events. Avoid using a key with excessive permissions — Upstack only needs to send event data, not manage subscribers or campaigns.
Once the destination is active, events typically appear in Attentive within a few minutes. You can verify by triggering a test action on your store and checking Attentive's event analytics.
No. Upstack sends events to Attentive, which then matches them to existing subscribers by email. Attentive will only trigger journeys for visitors who are already subscribed to your SMS list. This ensures compliance with SMS opt-in requirements.
Events without an identified email are skipped. Upstack only sends events to Attentive when identity resolution has successfully matched the visitor to a known profile with an email address.
## Troubleshooting
If events are showing in the Upstack Live Event Stream but not arriving in Attentive:
**Steps to fix:**
1. Confirm the Attentive destination shows **Active** (green) in the Upstack dashboard
2. Verify your API key has the required permissions for custom events
3. Check that the visitor was identified — events without email are skipped
4. In Attentive, check **Analytics → Events** and search for events containing "Upstackified"
5. If the destination status is red, disconnect and reconnect with a fresh API key
If events are arriving in Attentive but journeys aren't firing:
**Steps to fix:**
1. Verify the journey is configured to trigger on Upstackified events (e.g., `Product Added to Cart - Upstackified`)
2. Check that the subscriber exists in Attentive and is opted in to SMS
3. Review journey conditions — the subscriber may be excluded by filters or suppression rules
4. Check journey analytics for any errors or blocked sends
For additional troubleshooting beyond Attentive-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
## Related
How Upstack Enrichment improves visitor identification — the foundation of Flows recovery.
How Upstack ID connects anonymous sessions to known customers with email addresses.
Sync events and contacts to Klaviyo using the same Upstack Flows pipeline.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Microsoft Advertising Conversions API
Source: https://docs.upstackdata.com/destinations/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.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## 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.
Microsoft's Conversions API is currently in **pilot program**. Contact your Microsoft Advertising account manager to enroll before enabling server-side tracking in Upstack.
## 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.
Unlike Meta and Google, Microsoft **does not support address-level enhanced matching**. Only email and phone are accepted for identity matching.
## Setup guides
End-to-end walkthrough for connecting Microsoft Advertising to Upstack Data.
Configure the Microsoft Advertising destination inside Upstack Data.
Locate your UET Tag ID in Microsoft Advertising.
Create Event Goals to track specific conversion types.
Enroll in the CAPI pilot and generate your auth token.
Ensure msclkid is captured and stored for attribution.
## 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` |
Microsoft uses **free-form event names** rather than predefined standard events. Event matching is done via Event Goals configured in the Microsoft Advertising UI.
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
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.
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.
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.
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.
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.
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.
## Troubleshooting
**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
Your CAPI auth token is invalid or expired. Generate a new token in Microsoft Advertising UET Tag settings and update your Upstack destination configuration.
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
## Related
Server-side tracking for Meta (Facebook/Instagram) ads.
Send conversion events to Google Ads for campaign optimization.
Server-side event delivery to TikTok for attribution.
Track conversions on Pinterest campaigns with server-side events.
# Google Analytics 4 (deprecated)
Source: https://docs.upstackdata.com/destinations/ga4
The Google Analytics 4 destination has been deprecated and is no longer available for new connections.
**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.
## 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:
Server-side conversion delivery to Meta Ads.
Server-side conversion delivery to Google Ads.
Build custom integrations with your own analytics pipeline.
Browse the full list of supported destinations.
## 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/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.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## 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 get equivalent match-rate uplift without enabling Enhanced Conversions on the destination itself.
## 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.
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.
## Setup guides
End-to-end walkthrough for connecting Google Ads to Upstack Data.
Configure the Google Ads destination inside Upstack Data.
Connect Google Ads with OAuth and map events to conversion actions for server-side forwarding.
Locate the conversion ID and label values Upstack needs.
Create the dedicated Upstack purchase conversion goal in Google Ads.
Promote the Upstack goal to primary so Smart Bidding optimizes against it.
Connect Google Ads as a campaign data source for attribution reporting.
## FAQ
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.
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.
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.
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. Enabling Enhanced Conversions on top of the Upstack goal would not add data, and on the wrong goal it can cause duplicate or conflicting match logic.
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.
## Related
How Upstack Signal forwards events to ad platforms via server-to-server APIs.
How Upstack attributes conversions back to the campaigns that drove them.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Klaviyo
Source: https://docs.upstackdata.com/destinations/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.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## 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.
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.
## Best practices
**Expand to 5-email sequences.** Many brands run 1–2 emails per abandonment flow. Adding more touchpoints captures revenue from slower decision-makers.
**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.
**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.
## Setup guides
End-to-end walkthrough for connecting Klaviyo to Upstack Data.
Configure the Klaviyo destination inside Upstack Data.
Create a Klaviyo private API key with the right scopes for Upstack.
Build the recommended Klaviyo flows powered by Upstack-enriched events.
Clone Klaviyo's standard flows as a starting point for Upstack-powered versions.
Prevent the same visitor from receiving overlapping flow messages.
Tag Klaviyo flow links with UTMs so attribution flows back into Upstack.
## 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
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.
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.
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.
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.
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**.
## Troubleshooting
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
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
For additional troubleshooting beyond Klaviyo-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
## Related
How Upstack Enrichment improves visitor identification — the foundation of Flows recovery.
How Upstack ID connects anonymous sessions to known customers with email addresses.
How Upstack Signal and Upstack Flows power different types of destinations.
End-to-end diagnostic guide when events aren't arriving at any destination.
# LinkedIn Conversions API
Source: https://docs.upstackdata.com/destinations/linkedin
Send conversion events to LinkedIn's Conversions API for ad campaign optimization, audience building, and attribution — powered by Upstack Signal.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## What it does
LinkedIn's Conversions API is the server-side counterpart to the LinkedIn Insight Tag. Upstack Signal forwards storefront events — page views, product views, add-to-carts, and purchases — directly to LinkedIn's servers, bypassing browser restrictions like ad blockers, ITP, and cookie limits.
Server-side delivery gives LinkedIn'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 `li_fat_id` click identifier when available.
Unlike Meta and TikTok, LinkedIn uses **Conversion Rule IDs** to track specific conversion types. You'll need to create conversion rules in Campaign Manager and map them to event types in Upstack.
## How it works
Upstack runs as a dual-tracking layer alongside the LinkedIn Insight 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 LinkedIn Conversions API as a server-side event with a shared `eventId`.
Upstack authenticates with LinkedIn using a **Direct Access Token** that you generate inside Campaign Manager → **Data** → **Signals Manager** → **Conversions API** — no LinkedIn Developer app or OAuth setup required. The token grants the **Manage conversions** permission for the ad accounts you select and lasts until the expiry you choose (we recommend 1 year). See [How to generate a LinkedIn Conversions API token](/guides/linkedin-ads/how-to-generate-linkedin-conversion-api-token).
LinkedIn deduplicates server events against matching browser Insight Tag events using that `eventId`, so you do not double-count conversions as long as both sources use the same Partner ID. PII (`email`) is hashed with SHA-256 before delivery, as required by the Conversions API.
## Setup guides
End-to-end walkthrough for connecting LinkedIn to Upstack Data.
Configure the LinkedIn destination inside Upstack Data.
Locate your LinkedIn Partner ID in Campaign Manager.
Create conversion rules for tracking specific event types.
Generate the Conversions API access token Upstack uses to send events.
Enable enhanced conversion tracking for `li_fat_id` click IDs.
## Event mapping
Upstack maps storefront events to LinkedIn standard events automatically:
| Upstack event | LinkedIn event | Key match data |
| ---------------------- | ----------------- | ---------------------------------------------- |
| `PageView` | (via Insight Tag) | URL, referrer, user agent |
| `ViewContent` | `VIEW_CONTENT` | `content_ids`, `value`, `currency` |
| `AddToCart` | `ADD_TO_CART` | `content_ids`, `value`, `currency` |
| `InitiateCheckout` | `START_CHECKOUT` | `value`, `currency`, `num_items` |
| `Purchase` | `PURCHASE` | `value`, `currency`, `order_id`, `content_ids` |
| `Lead` | `LEAD` | `email`, `phone` |
| `CompleteRegistration` | `SIGN_UP` | `email` |
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 maximize match quality.
## FAQ
The **Partner ID** identifies your LinkedIn ad account's Insight Tag — it's the same ID used for browser-side tracking. The **Conversion Rule ID** identifies a specific conversion action you want to track (e.g., Purchase, Lead, Sign Up). You'll have one Partner ID but multiple Conversion Rule IDs, one for each event type.
Generate a **Direct Access Token** in Campaign Manager → **Data** → **Signals Manager** → **Conversions API**, then paste it into the **API Access Token** field of your Upstack LinkedIn destination. See the step-by-step [How to generate a LinkedIn Conversions API token](/guides/linkedin-ads/how-to-generate-linkedin-conversion-api-token) guide.
Direct Access Tokens expire based on the duration you choose when generating them. We recommend setting the expiry to **1 year** to minimize rotation. When a token expires, the destination turns Unhealthy and events return a `401` error — generate a new token with the same settings and update the destination.
The token needs the **Manage conversions** permission and access to the ad account that owns your Conversion Rules. Without this permission, events return a `403` error.
Open LinkedIn Campaign Manager → **Data** → **Signals Manager** → **Signal Diagnostics**. Server-side events appear with status "Received" and show match quality metrics. Upstack also surfaces delivery status inside the destination settings.
No — as long as the Partner ID in Upstack matches the Partner ID in your Insight Tag. Upstack sends a shared `eventId` on every server-side event, and LinkedIn's deduplication logic matches events by `eventId` and keeps only one.
LinkedIn's deduplication works by matching `eventId` across browser and server events **within the same Conversion Rule**. If you use the same Conversion Rule for both sources, deduplication works automatically. However, some merchants prefer separate rules for A/B testing or validation — in that case, browser events go to one rule and server events to another.
LinkedIn's match rate depends on how much identity data each event carries. Common causes of low match quality:
* **Missing `li_fat_id`** — LinkedIn 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; it's the strongest server-side match key for LinkedIn.
## Troubleshooting
If events aren't appearing after 10 minutes of confirmed store traffic, check the basics first.
**Steps to fix:**
1. Go to **Integrations → Destinations → LinkedIn**
2. Verify the **Partner ID**, **API Access Token**, and **Conversion Rule IDs** 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 Campaign Manager and update the destination
5. Verify conversion rules are associated with at least one active campaign
| Error Code | Meaning | Solution |
| ---------- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
| 401 | Invalid or expired token | Generate a new Direct Access Token in Campaign Manager → Data → Signals Manager → Conversions API |
| 403 | Permission denied | Ensure token has "Manage conversions" permission and access to the correct ad account |
| 422 | Invalid payload | Verify conversion URN format (`urn:lla:llaPartnerConversion:{id}`), timestamp is within 90 days, and at least one user identifier is present |
Direct Access Tokens expire based on the duration you set during generation (default 1 year).
To renew:
1. Go to Campaign Manager → Data → Signals Manager → Conversions API
2. Generate a new token with same settings
3. Update the token in Upstack Data destination settings
LinkedIn's match quality measures how well server events match to LinkedIn users.
**Common causes:**
* **High anonymous traffic** — Events from visitors who haven't provided contact info have fewer matching parameters. Match quality improves as more identified customers generate events.
* **Missing click IDs** — Enable enhanced conversion tracking in Insight Tag settings to capture `li_fat_id` from ad clicks.
* **Incorrect Partner ID** — If the Partner 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.
For additional troubleshooting beyond LinkedIn-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
## Related
How Upstack Signal forwards events to ad platforms via server-to-server APIs.
How Upstack matches anonymous visitors to known customers for higher match rates.
Set up Meta's Conversions API as another server-side destination alongside LinkedIn.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Loops
Source: https://docs.upstackdata.com/destinations/loops
Forward identity-resolved customer events to Loops to trigger email automations, transactional emails, and marketing campaigns based on real-time e-commerce activity.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
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.
## 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 |
Your Loops API key can be found in your Loops account under **Settings → API**. Generate a key with write access to events and contacts.
## Set Up Loops
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
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
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
## FAQ
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.
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.
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.
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.
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.
## Troubleshooting
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
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
For additional troubleshooting beyond Loops-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
## Related
How Upstack Enrichment improves visitor identification — the foundation of Flows recovery.
How Upstack ID connects anonymous sessions to known customers with email addresses.
Sync events and contacts to Klaviyo using the same Upstack Flows pipeline.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Meta Conversions API (CAPI)
Source: https://docs.upstackdata.com/destinations/meta-capi
Send server-side conversion events to Meta Ads with Upstack Signal — improve Event Match Quality and campaign optimization.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## 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
End-to-end walkthrough for connecting Meta to Upstack Data.
Configure the Meta Pixel destination inside Upstack Data.
Locate your Meta Pixel Dataset ID in Events Manager.
Generate a Conversions API access token in Meta.
Rotate or replace your existing CAPI access token.
Turn off Shopify's native Facebook integration to prevent duplicate events.
Approve Upstack's custom events inside Meta Events Manager.
## 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
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.
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.
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.
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.
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.
## Related
How Upstack Signal forwards events to ad platforms via server-to-server APIs.
How Upstack matches anonymous visitors to known customers for higher match rates.
Set up TikTok's Events API as another server-side destination alongside Meta.
End-to-end diagnostic guide when events aren't arriving at any destination.
# NewsBreak Ads
Source: https://docs.upstackdata.com/destinations/newsbreak
Send conversion events to NewsBreak's postback API for native advertising campaign optimization — powered by Upstack Signal.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## 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.
**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.
## 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.
## Setup guides
End-to-end walkthrough for connecting NewsBreak to Upstack Data.
Configure the NewsBreak destination inside Upstack Data.
Locate your NewsBreak Pixel ID in the Ad Manager Event Management.
Add the click ID parameter to your campaign URL suffix.
## 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.
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.
## FAQ
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.
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.
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.
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.
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.
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.
## Troubleshooting
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
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
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
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
For additional troubleshooting beyond NewsBreak-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
## Related
How Upstack Signal forwards events to ad platforms via server-to-server APIs.
How Upstack matches anonymous visitors to known customers for higher match rates.
Set up Outbrain — another native advertising platform with click-ID-only attribution.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Omnisend
Source: https://docs.upstackdata.com/destinations/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.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
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.
Complete step-by-step walkthrough for connecting Omnisend to Upstack.
Add and configure the Omnisend destination inside the Upstack dashboard.
Generate the Omnisend API key Upstack uses to sync events and contacts.
## FAQ
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.
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.
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](/guides/omnisend/how-to-generate-your-omnisend-api-key).
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.
## Related
How Upstack Enrichment improves visitor identification — the foundation of Flows recovery.
How Upstack ID connects anonymous sessions to known customers with email addresses.
Sync events and contacts to Klaviyo using the same Upstack Flows pipeline.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Outbrain Amplify
Source: https://docs.upstackdata.com/destinations/outbrain
Send conversion events to Outbrain's Unified Pixel API for native advertising campaign optimization — powered by Upstack Signal.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## 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.
**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.
## 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
End-to-end walkthrough for connecting Outbrain to Upstack Data.
Configure the Outbrain destination inside Upstack Data.
Locate your Outbrain Marketer ID in the Amplify Dashboard.
Add the click ID parameter to your campaign URL suffix.
## 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
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.
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.
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.
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.
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.
## Troubleshooting
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
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
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
For additional troubleshooting beyond Outbrain-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
## Related
How Upstack Signal forwards events to ad platforms via server-to-server APIs.
How Upstack matches anonymous visitors to known customers for higher match rates.
Set up Meta's Conversions API — supports enhanced matching unlike Outbrain.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Destinations
Source: https://docs.upstackdata.com/destinations/overview
Send conversion events and customer data from Upstack Data to ad platforms, analytics tools, and automation systems.
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.
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.
## Upstack products that power 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 destinations
### Ad Platforms
Send conversion events to Facebook and Instagram via the Conversions API for improved ad optimization.
Forward conversion events to Google Ads for Smart Bidding and audience building.
Send conversion events to TikTok via the Events API for campaign optimization and audience building.
Send conversion events to Pinterest via the Conversions API for campaign optimization.
Send conversion events to Snapchat via the Conversions API for campaign optimization.
Forward conversion events to Reddit's Conversions API to recover ad-blocker losses and improve EMQ.
Send conversion events to AppLovin for mobile app install campaign optimization.
Forward B2B conversion events to LinkedIn's Conversions API for campaign optimization.
Send conversion events to Microsoft Advertising via the Conversions API.
Forward conversion events to Outbrain for native advertising optimization.
Send conversion events to Taboola for native advertising campaign optimization.
Forward conversion events to NewsBreak for news feed advertising optimization.
### Email & SMS Marketing
Sync customer events and properties to Klaviyo for email/SMS automation, segmentation, and flow triggers.
Sync customer events and profiles to Omnisend for email/SMS automation and abandonment flows.
Send customer events to Sendlane for email marketing automation.
Send customer events to Loops for automated email marketing workflows.
Sync customer events to Attentive for SMS marketing automation.
### Analytics
Send events to PostHog for product analytics and feature flags.
### Notifications & Integrations
Send real-time notifications to Slack channels for orders, events, and alerts.
Deliver raw event payloads to any HTTP endpoint for custom integrations and data warehouses.
### Deprecated
GA4 destination is deprecated. Use native GA4 installation instead.
## 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.
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.
# Pinterest Ads
Source: https://docs.upstackdata.com/destinations/pinterest
Send conversion events to Pinterest's Conversions API for ad campaign optimization, audience building, and attribution.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
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.
Complete step-by-step walkthrough for connecting Pinterest to Upstack.
Add and configure the Pinterest destination inside the Upstack dashboard.
Locate an existing Pinterest Pixel Tag ID in your Pinterest Ads account.
Create a new Pinterest Pixel Tag if you don't already have one.
Locate the Pinterest Advertiser ID required to identify your ad account.
Generate the Conversions API access token Upstack uses to send events.
Turn off Shopify's native Pinterest data sharing to prevent duplicate events.
## FAQ
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.
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](/guides/pinterest-ads/how-to-disable-pinterest-data-sharing-in-shopify).
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.
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.
## Related
How Upstack Signal forwards events to ad platforms via server-to-server APIs.
How Upstack ID matches anonymous visitors to known customers for higher match rates.
Browse all available destinations and how Upstack delivers data to each.
End-to-end diagnostic guide when events aren't arriving at any destination.
# PostHog
Source: https://docs.upstackdata.com/destinations/posthog
Forward identity-resolved customer events to PostHog for product analytics, session recordings, and feature flags.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
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.
## Set up PostHog
In PostHog, go to **Project Settings → Project API Key**. The key starts with `phc_` followed by alphanumeric characters.
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.
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
* **Enable Auto Capture** — Automatically capture pageviews and clicks
* **Enable Session Recording** — Enable session recording for user replays (requires PostHog session recording to be configured)
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**.
## 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
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.
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.
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.
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.
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.
## Troubleshooting
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
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
For additional troubleshooting beyond PostHog-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
## Related
How Upstack ID connects anonymous sessions to known customers.
How Upstack Signal and Upstack Flows power different types of destinations.
Send custom events to PostHog and other destinations.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Reddit Conversions API
Source: https://docs.upstackdata.com/destinations/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.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## 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
End-to-end walkthrough for connecting Reddit Ads to Upstack Data.
Configure the Reddit destination inside Upstack Data.
Locate your Reddit Pixel ID in Reddit Ads Manager Events Manager.
Generate a Conversions API access token in Reddit Ads Manager.
Rotate or replace your existing Reddit CAPI access token.
Remove existing Reddit pixel installations from Shopify to prevent duplicate events.
## 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
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.
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.
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.
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](/guides/reddit-ads/how-to-disable-existing-reddit-pixel-in-shopify) to consolidate to a single pixel before activating Upstack.
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.
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.
## Related
How Upstack Signal forwards events to ad platforms via server-to-server APIs.
How Upstack matches anonymous visitors to known customers for higher match rates.
Set up Meta CAPI as another server-side destination alongside Reddit.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Sendlane
Source: https://docs.upstackdata.com/destinations/sendlane
Forward identity-resolved customer events to Sendlane to power email and SMS automation, abandoned cart recovery, and browse abandonment workflows.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
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.
## 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.
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.
## 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 |
In Sendlane, go to **Settings → API** and generate a new API token. Copy the token — you'll need it in the next step.
In Sendlane, go to **Integrations → Custom Integration** and create a new integration. Copy the **Integration Token** provided.
In the Upstack dashboard, go to **Destinations → Add Destination → Sendlane** and paste both credentials.
## 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
**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.
**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.
**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.
## FAQ
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.
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.
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.
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.
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.
## Troubleshooting
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
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
For additional troubleshooting beyond Sendlane-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
## Related
How Upstack Enrichment improves visitor identification — the foundation of Flows recovery.
How Upstack ID connects anonymous sessions to known customers with email addresses.
Similar email/SMS marketing integration for Klaviyo users.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Slack
Source: https://docs.upstackdata.com/destinations/slack
Send real-time event notifications to Slack channels for purchases, leads, and other key conversions.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## 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
Get notified in Slack the moment a purchase completes. Include order value, customer info, and attribution source.
Alert your sales team when a lead form is submitted. Route different lead types to different channels.
Use conditions to only notify on orders above a threshold — celebrate the big wins.
Track checkout initiations in real-time to spot abandonment patterns.
## FAQ
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.
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.
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.
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
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.
## Related
Send raw event payloads to any HTTP endpoint for custom integrations.
Full reference for all event types and properties available in templates.
Create custom events to trigger Slack notifications for any action.
How Upstack delivers events to all destination types.
# Snapchat Ads
Source: https://docs.upstackdata.com/destinations/snapchat
Send conversion events to Snapchat's Conversions API for ad campaign optimization, audience building, and attribution.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
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.
Complete step-by-step walkthrough for connecting Snapchat to Upstack.
Add and configure the Snapchat destination inside the Upstack dashboard.
Locate the Snap Pixel ID in your Snapchat Ads account.
Generate the Conversions API token Upstack uses to send events.
Turn off Shopify's native Snapchat data sharing to prevent duplicate events.
## FAQ
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.
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](/guides/snapchat-ads/how-to-disable-snapchat-data-sharing-in-shopify).
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.
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](/guides/snapchat-ads/how-to-generate-my-snapchat-conversion-api-token).
## Related
How Upstack Signal forwards events to ad platforms via server-to-server APIs.
How Upstack ID matches anonymous visitors to known customers for higher match rates.
Browse all available destinations and how Upstack delivers data to each.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Taboola
Source: https://docs.upstackdata.com/destinations/taboola
Send conversion events to Taboola's S2S API for native advertising campaign optimization — powered by Upstack Signal.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## 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.
**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.
## 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.
## 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. Toggle **Enable Server-Side Tracking** to send events via the S2S API
5. 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
The `tblci` parameter is case-sensitive. Ensure your URL uses lowercase `tblci`.
## 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.
**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`).
## 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
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.
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.
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.
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.
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.
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.
## Troubleshooting
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
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
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
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)
For additional troubleshooting beyond Taboola-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
## Related
How Upstack Signal forwards events to ad platforms via server-to-server APIs.
How Upstack matches anonymous visitors to known customers for higher match rates.
Set up Outbrain's native advertising API — similar click-ID-only attribution model.
End-to-end diagnostic guide when events aren't arriving at any destination.
# TikTok Events API
Source: https://docs.upstackdata.com/destinations/tiktok
Send conversion events to TikTok via the Events API for campaign optimization, audience building, and attribution — powered by Upstack Signal.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## 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.
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.
## 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
End-to-end walkthrough for connecting TikTok to Upstack Data.
Configure the TikTok Pixel destination inside Upstack Data.
Locate your existing TikTok Pixel ID in Events Manager.
Create a new TikTok Pixel for your store.
Generate the Events API access token Upstack uses to send events.
Turn off Shopify's native TikTok integration to prevent duplicate events.
## 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
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.
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.
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.
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.
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.
## Advanced configuration
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.
## Troubleshooting
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
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 `` section
4. After removing duplicate sources, monitor TikTok Events Manager for 24 hours to confirm counts normalize
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.
For additional troubleshooting beyond TikTok-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/events-not-reaching-destination).
## Related
How Upstack Signal forwards events to ad platforms via server-to-server APIs.
How Upstack matches anonymous visitors to known customers for higher match rates.
Set up Meta's Conversions API as another server-side destination alongside TikTok.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Webhooks
Source: https://docs.upstackdata.com/destinations/webhooks
Deliver raw event payloads to any HTTP endpoint for custom integrations, data warehouses, and internal systems.
**Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs.
## 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.
Full reference for all event types and properties included in webhook payloads.
Complete list of event properties and context fields available in every payload.
## 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
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.
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.
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.
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.
Yes. HTTP endpoints are not supported. Your endpoint must be publicly reachable (Upstack delivers from its cloud infrastructure) and serve a valid TLS certificate.
## Related
Full reference for all event types and properties included in webhook payloads.
Complete list of event properties and context fields available in every payload.
How Upstack delivers events to all destination types.
End-to-end diagnostic guide when events aren't arriving at any destination.
# Frequently Asked Questions
Source: https://docs.upstackdata.com/faq
Answers to common questions about Upstack Data — event tracking, identity resolution, privacy, custom events, Shopify compatibility, team management, and platform concepts.
Once the Upstack pixel is installed and Shopify is connected, the following events are captured automatically with no additional configuration:
* **PageView** — every page load on your storefront
* **ViewContent** — product detail page views
* **AddToCart** — items added to the cart
* **InitiateCheckout** — checkout started
* **AddPaymentInfo** — payment method entered
* **Purchase** — completed orders (captured server-side via Shopify webhooks for maximum accuracy)
* **Search** — storefront search queries
Shopify webhook events like `orders/refunded`, `orders/fulfilled`, and `customers/create` are also captured automatically through the server-side integration.
You don't need to add any custom code for these standard events. For additional events, see [Custom Events](/pixel/custom-events).
* **Live Event Stream:** Events appear within **30–60 seconds** of occurring on your storefront. This is the fastest way to verify your integration.
* **Dashboard analytics:** Aggregated metrics update every **5–15 minutes** depending on processing load.
* **Destination delivery:** Events are forwarded to destinations (Meta, TikTok, etc.) within **1–5 minutes** of capture.
* **Attribution reports:** Attribution data may take up to **1 hour** to fully resolve, because Upstack waits for identity resolution to complete before finalizing attribution.
If events aren't appearing after 5 minutes, see [Events Not in Dashboard](/troubleshooting/events-not-in-dashboard).
Yes. Upstack supports headless Shopify storefronts using the **Upstack JavaScript SDK** instead of the Shopify app embed.
For headless setups:
1. Install the Upstack SDK via npm or a `
```
Replace `YOUR_PIXEL_ID` with the Pixel ID found in the [Upstack dashboard](https://app.upstackdata.com) under **Settings → Event Health** (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.
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.
## 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/shopify/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](/get-started/verify-events).
## Related
The default install path for storefronts that use a Shopify theme.
How the Shopify source ingests events through the pixel and webhooks.
Server-side events that capture automatically regardless of storefront architecture.
Confirm events are flowing from your storefront into Upstack.
# Upstack Data Documentation
Source: https://docs.upstackdata.com/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
## 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.
## Start building
## Query and automate
# add_payment_info Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked when customers complete the payment step in 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
## Related Events
* [add\_shipping\_info](/pixel/events/add-shipping-info) — Previous checkout step
* [purchase](/pixel/events/purchase) — When order is completed
# add_shipping_info Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked when customers complete the shipping step in 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
## Related Events
* [initiate\_checkout](/pixel/events/initiate-checkout) — Starting checkout
* [select\_shipping\_method](/pixel/events/select-shipping-method) — When selecting specific shipping option
* [add\_payment\_info](/pixel/events/add-payment-info) — After entering payment details
# add_to_cart Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked when using standard Shopify cart functionality.
## 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](/pixel/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](/pixel/events/view-content) — View product before adding
* [product\_removed\_from\_cart](/pixel/events/product-removed-from-cart) — When removing from cart
* [view\_cart](/pixel/events/view-cart) — When viewing cart
* [initiate\_checkout](/pixel/events/initiate-checkout) — When starting checkout
# add_to_wishlist Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Manual implementation required. Requires a wishlist app or custom implementation.
## 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](/pixel/events/view-content) — When viewing the product
* [add\_to\_cart](/pixel/events/add-to-cart) — When adding to cart instead
# book_call Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Manual implementation required. Integrate with your scheduling tool (Calendly, etc.).
## 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](/pixel/events/schedule) — For general appointment scheduling
* [contact](/pixel/events/contact) — For contact form submissions
* [lead](/pixel/events/lead) — For general lead capture
# complete_registration Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Manual implementation required. Not automatically tracked.
## 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](/pixel/events/sign-up) — For simpler signup tracking
* [login](/pixel/events/login) — When existing users log in
* [lead](/pixel/events/lead) — For lead generation
# contact Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Manual implementation required. Integrate with your 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
## Related Events
* [lead](/pixel/events/lead) — For general lead capture
* [book\_call](/pixel/events/book-call) — When scheduling a call
# Custom Events
Source: https://docs.upstackdata.com/pixel/events/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.
Custom events flow through the same Capture → Resolve → Enrich → Activate pipeline as standard events. They receive identity resolution, enrichment, and destination forwarding automatically.
**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.
## 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
Event names are case-sensitive. `wishlist_add` and `WishlistAdd` are treated as separate events. Use snake\_case to match standard event conventions.
## 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. |
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.
## 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.
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).
## Upstack-native custom purchase events
**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.
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.
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](/guides/facebook-ads/set-up-nc-and-rc-purchase-events-in-meta#new-customer-purchase-nc-purchase) for Meta setup steps.
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](/guides/facebook-ads/set-up-nc-and-rc-purchase-events-in-meta#returning-customer-purchase-rc-purchase) for Meta setup steps.
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.
## 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.
**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.
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.
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.
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.
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.
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%).
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.
## Customer Behavior Purchase Events
Upstack automatically segments purchases by customer behavior patterns.
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.
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.
## Related Documentation
Review the full list of built-in events before creating a custom event.
Full track() method reference with all 7 parameters.
See all available property fields you can include in custom\_data.
Events automatically tracked on Shopify stores.
# initiate_checkout Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked when customers click the checkout button or land on the checkout page.
## 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](/pixel/events/view-cart) — Before starting checkout
* [add\_shipping\_info](/pixel/events/add-shipping-info) — After entering shipping details
* [add\_payment\_info](/pixel/events/add-payment-info) — After entering payment details
* [purchase](/pixel/events/purchase) — When order is completed
# lead Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Tracked via form hooks when using compatible form/popup apps. Manual implementation may be required for custom forms.
## 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](/pixel/events/subscribe) — For marketing opt-ins specifically
* [contact](/pixel/events/contact) — For contact form submissions
* [complete\_registration](/pixel/events/complete-registration) — For account signups
# login Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Manual implementation required. Not automatically tracked.
## 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](/pixel/events/sign-up) — When new users create accounts
* [complete\_registration](/pixel/events/complete-registration) — For registration flows
# page_view Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked by the Upstack Pixel on all page loads.
## 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](/pixel/events/view-content) — When viewing a specific product
* [view\_category](/pixel/events/view-category) — When viewing a collection page
* [search](/pixel/events/search) — When viewing search results
# product_removed_from_cart Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked when items are removed from 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](/pixel/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](/pixel/events/add-to-cart) — When adding items to cart
* [view\_cart](/pixel/events/view-cart) — When viewing cart contents
# Address Properties
Source: https://docs.upstackdata.com/pixel/events/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.
Use `province` for the full state/province name and `provinceCode` for the abbreviated code. Use `zip` for postal codes.
# Auto-Captured Fields
Source: https://docs.upstackdata.com/pixel/events/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/pixel/events/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
Subtotal before tax/shipping.
Tax amount applied.
Shipping cost.
Total discount amount.
Promo code used.
Payment method.
Shipping speed selected.
## 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/pixel/events/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
Product data for e-commerce events — id, name, price, quantity, brand, category.
B2B/SaaS tracking — accounts, subscriptions, trials, MRR, seats.
Click IDs, UTMs, device info, geo — captured automatically.
## 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'
}
]
});
```
See the complete items array specification with all supported fields.
## 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'
});
```
See all SaaS properties including trial, payment, and seat tracking fields.
## Auto-Captured Fields
**Do not include auto-captured fields in your `track()` calls.** The Upstack Pixel and edge API capture these automatically.
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` |
See all click IDs (Meta, Google, TikTok, Pinterest, Snapchat, AppLovin, LinkedIn, Microsoft, Reddit, and more), UTM parameters, and context fields.
# Content Properties
Source: https://docs.upstackdata.com/pixel/events/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 |
Search query entered by the user.
## 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 |
For product data, always use the `items` array. The platform extracts and formats the necessary fields for each advertising destination.
## Related Properties
Pass all product data here — content fields are derived automatically.
Learn how product IDs are extracted from items.
# content_ids
Source: https://docs.upstackdata.com/pixel/events/properties/content-ids
Auto-derived array of product IDs sent to advertising platforms.
`content_ids` is **not** a user-input property. It is automatically derived from your `items` array during event forwarding.
## 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
Pass product data here — IDs are extracted automatically.
User-input property for search queries.
# Core Event Properties
Source: https://docs.upstackdata.com/pixel/events/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
Monetary value of the event.
ISO 4217 currency code.
Unique order identifier.
Human-readable order number.
## 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: [/* ... */]
});
```
For Purchase events, `value` should match the order total you want reported to ad platforms.
# coupon
Source: https://docs.upstackdata.com/pixel/events/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
Discount amount applied.
Promotion identifier.
# creativeName
Source: https://docs.upstackdata.com/pixel/events/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 |
Use `creativeName` and `creativeSlot` to track which on-site promotions drive the most conversions.
## Related Properties
Placement position on page.
Promotion identifier.
# creativeSlot
Source: https://docs.upstackdata.com/pixel/events/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
Creative variant name.
Store or location identifier.
# currency
Source: https://docs.upstackdata.com/pixel/events/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
The monetary value of the event.
# Customer Properties
Source: https://docs.upstackdata.com/pixel/events/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
Primary cross-device identifier.
E.164 format phone number.
Customer name fields.
Shipping and billing address.
## 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'
});
```
Events with email typically score EMQ 8-9 on Meta. Events with only IP address score 2-3.
## 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/pixel/events/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
Coupon code used.
Subtotal before discounts.
# email
Source: https://docs.upstackdata.com/pixel/events/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.
Events with email typically score EMQ 8-9 on Meta. Events with only IP address score 2-3.
## Related Properties
Customer phone number for improved matching.
Customer name for identity resolution.
# Event Properties Reference
Source: https://docs.upstackdata.com/pixel/events/properties/index
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.
Use **camelCase** when sending properties — the platform automatically converts to the format each destination requires.
## 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.
Monetary value of the event. Required for purchase, lead, subscribe.
ISO 4217 currency code. Required with value.
Unique order identifier. Required for purchase/refund.
Human-readable order number shown to customers.
### Quick Reference
| Property | Type | Required | Events |
| ---------------------------------------------------------- | ------ | --------------------------------- | ------------------------------------------------------------------------------------------- |
| [`value`](/pixel/events/properties/value) | number | Yes for purchase, lead, subscribe | purchase, add\_to\_cart, view\_content, initiate\_checkout, lead, subscribe, trial\_started |
| [`currency`](/pixel/events/properties/currency) | string | Yes (when value is set) | Any event with `value` |
| [`transactionId`](/pixel/events/properties/transaction-id) | string | Yes for purchase/refund | purchase, refund |
| `orderId` | string | No | purchase, refund |
| [`orderName`](/pixel/events/properties/order-name) | string | No | purchase |
`orderId` and `transactionId` are interchangeable — use whichever fits your system. If both are provided, `transactionId` takes precedence.
```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.
Primary identifier for cross-device tracking.
E.164 format for improved matching.
Customer name for identity resolution.
Shipping and billing address properties.
### Quick Reference
| Property | Type | Required | Events |
| -------------------------------------------- | ------ | ----------- | ----------------------------------- |
| [`email`](/pixel/events/properties/email) | string | Recommended | All events (improves match quality) |
| [`phone`](/pixel/events/properties/phone) | string | No | All events (improves match quality) |
| [`firstName`](/pixel/events/properties/name) | string | No | All events |
| [`lastName`](/pixel/events/properties/name) | string | No | All events |
Events with email typically score EMQ 8-9 on Meta. Events with only IP address score 2-3.
```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.
Subtotal before tax/shipping.
Tax amount applied.
Shipping cost.
Total discount amount.
Promo code used.
Payment method used.
Shipping speed selected.
### Quick Reference
| Property | Type | Description |
| ---------------------------------------------------------- | --------- | ---------------------------------------------------------- |
| [`subtotalPrice`](/pixel/events/properties/subtotal-price) | number | Subtotal before tax and shipping |
| `price` | number | Base price (distinct from `value` which is the total) |
| [`tax`](/pixel/events/properties/tax) | number | Tax amount |
| [`shipping`](/pixel/events/properties/shipping) | number | Shipping cost |
| [`discount`](/pixel/events/properties/discount) | number | Total discount amount applied |
| [`coupon`](/pixel/events/properties/coupon) | string | Coupon or promo code used |
| [`paymentType`](/pixel/events/properties/payment-type) | string | Payment method (`"credit_card"`, `"paypal"`, `"shop_pay"`) |
| [`shippingTier`](/pixel/events/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.
Search query entered by the user.
Array of product IDs from search results.
### Quick Reference
| Property | Type | Description | Events |
| ----------------------------------------------------- | --------- | --------------------------------- | ------------------------------------------- |
| [`searchTerm`](/pixel/events/properties/search-term) | string | Search query entered | search |
| [`content_ids`](/pixel/events/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.
Promotion/campaign identifier.
Promotion display name.
Creative/ad variant name.
Placement position on page.
Store/affiliate/location ID.
### Quick Reference
| Property | Type | Description | Events |
| ---------------------------------------------------------- | ------ | ---------------------------------------- | -------------------------------------- |
| [`promotionId`](/pixel/events/properties/promotion-id) | string | Promotion or campaign identifier | view\_content, add\_to\_cart, purchase |
| [`promotionName`](/pixel/events/properties/promotion-name) | string | Promotion display name | view\_content, add\_to\_cart, purchase |
| [`creativeName`](/pixel/events/properties/creative-name) | string | Creative or ad variant name | view\_content, add\_to\_cart, purchase |
| [`creativeSlot`](/pixel/events/properties/creative-slot) | string | Creative placement position | view\_content, add\_to\_cart, purchase |
| [`locationId`](/pixel/events/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
Product details for e-commerce events — id, name, price, quantity, brand, category, variant.
Shipping and billing address fields — address1, city, province, country, zip.
B2B/SaaS properties — account, subscription, trial, payment, and churn tracking.
Click IDs, UTMs, and context fields captured automatically by the pixel.
***
## 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 |
The platform accepts both formats and normalizes automatically. You can use either `contentIds` or `content_ids` — both work.
### 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', { ... });
```
# Items Array
Source: https://docs.upstackdata.com/pixel/events/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) |
If `value` is not provided, it is computed automatically as `price × quantity`.
## 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/pixel/events/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
Creative placement position.
Promotion identifier.
# firstName / lastName
Source: https://docs.upstackdata.com/pixel/events/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
Customer email — primary identifier.
Customer phone number.
Shipping and billing address fields.
# orderName
Source: https://docs.upstackdata.com/pixel/events/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
Unique order identifier for tracking.
# paymentType
Source: https://docs.upstackdata.com/pixel/events/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 |
These are suggested values. Any string is accepted.
## Related Properties
Shipping tier selected.
# phone
Source: https://docs.upstackdata.com/pixel/events/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
Customer email — primary identifier.
Customer name for identity resolution.
# promotionId
Source: https://docs.upstackdata.com/pixel/events/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
Human-readable promotion name.
Creative variant name.
Placement position on page.
# promotionName
Source: https://docs.upstackdata.com/pixel/events/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
Promotion identifier.
Creative variant name.
# Promotional Properties
Source: https://docs.upstackdata.com/pixel/events/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
Promotion/campaign identifier.
Promotion display name.
Creative/ad variant name.
Placement position on page.
Store/affiliate/location ID.
## 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/pixel/events/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.
See the complete SaaS Events Reference for event names, timing, and usage patterns.
## 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/pixel/events/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
Product IDs from search results.
# shipping
Source: https://docs.upstackdata.com/pixel/events/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
Shipping speed/tier selected.
Tax amount.
# shippingTier
Source: https://docs.upstackdata.com/pixel/events/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 |
These are suggested values. Any string is accepted.
## Related Properties
Shipping cost amount.
Payment method used.
# subtotalPrice
Source: https://docs.upstackdata.com/pixel/events/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
Final order total.
Tax amount.
Shipping cost.
Discount amount applied.
# tax
Source: https://docs.upstackdata.com/pixel/events/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
Subtotal before tax and shipping.
Shipping cost.
# transactionId / orderId
Source: https://docs.upstackdata.com/pixel/events/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 |
For Shopify stores, this is typically the Shopify order ID (e.g., `shopify_order_5678901234`).
## Related Properties
Human-readable order number shown to customers.
The monetary value of the order.
# value
Source: https://docs.upstackdata.com/pixel/events/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 |
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.
## Related Properties
ISO 4217 currency code — required with value.
Subtotal before tax and shipping.
# purchase Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked on the order confirmation page (thank you page) and via server-side webhooks.
## 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');
```
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.
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](/pixel/standard-events#item-object)) |
| tax | number | No | Tax amount |
| shipping | number | No | Shipping cost |
| email | string | No | Customer email (improves identity matching) |
**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.
## When to Fire
* Order confirmation page load
* After successful payment confirmation
* Shopify `orders/create` webhook (server-side)
## Related Events
* [initiate\_checkout](/pixel/events/initiate-checkout) — Starting the checkout
* [add\_payment\_info](/pixel/events/add-payment-info) — Before completing purchase
* [refund](/pixel/events/refund) — When order is refunded
# quiz_completed Event
Source: https://docs.upstackdata.com/pixel/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.
**Custom Event** — This event is not automatically tracked. Fire it manually using the JavaScript SDK when a quiz is completed.
## 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. |
**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.
## Related Events
* [quiz\_question\_answered](/pixel/events/quiz-question-answered) — Track individual question responses
* [lead](/pixel/events/lead) — For capturing contact info during or after quiz
* [view\_content](/pixel/events/view-content) — When quiz results include product views
# Quiz Events
Source: https://docs.upstackdata.com/pixel/events/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.
**Custom Events** — Quiz events are not automatically tracked. Fire them manually using the JavaScript SDK at the appropriate points in your quiz flow.
## Available Events
Fires when a visitor completes a quiz. Captures the result, recommended products, and completion time.
Fires when a visitor answers an individual question. Use for funnel analysis and drop-off tracking.
## 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 |
**Best practice:** Always include `quiz_id` on both events so you can correlate question-level data with completion data in your analytics.
## Related
* [Custom Events](/pixel/events/custom-events) — General guide for firing custom events
* [lead](/pixel/events/lead) — Capture contact info during or after quiz
* [view\_content](/pixel/events/view-content) — Track when quiz results show product recommendations
# quiz_question_answered Event
Source: https://docs.upstackdata.com/pixel/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.
**Custom Event** — This event is not automatically tracked. Fire it manually using the JavaScript SDK after each question is answered.
## 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. |
**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.
## Related Events
* [quiz\_completed](/pixel/events/quiz-completed) — Fire when the quiz is finished
* [lead](/pixel/events/lead) — If capturing contact info mid-quiz
# refund Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked via the `refunds/create` webhook (server-side).
## 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](/pixel/events/purchase) — The original order event
# schedule Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Manual implementation required. Integrate with your scheduling system.
## 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](/pixel/events/book-call) — For sales calls and consultations
* [lead](/pixel/events/lead) — For general lead capture
# search Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked when using Shopify's native search functionality.
## 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](/pixel/events/view-content) — When clicking on a search result
* [view\_item\_list](/pixel/events/view-item-list) — For displaying search results as a list
# select_shipping_method Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Manual implementation required. Not automatically tracked.
## 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](/pixel/events/add-shipping-info) — When entering shipping address
* [add\_payment\_info](/pixel/events/add-payment-info) — After entering payment details
# sign_up Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Manual implementation required. Not automatically tracked.
## JavaScript
```javascript theme={null}
window._upstack('track', 'sign_up', {
method: 'email'
});
```
## Properties
| Property | Type | Required | Description |
| -------- | ------ | -------- | --------------------------------------------------- |
| method | string | No | Signup method (`'email'`, `'google'`, `'facebook'`) |
**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.
## When to Fire
* Account creation form submission
* OAuth signup completion
## Related Events
* [complete\_registration](/pixel/events/complete-registration) — For multi-step registration
* [login](/pixel/events/login) — When existing users log in
# submit_application Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Manual implementation required. Integrate with your application forms.
## 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](/pixel/events/lead) — For general lead capture
* [complete\_registration](/pixel/events/complete-registration) — For account signups
# subscribe Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Tracked via popup/form hooks when using compatible email/SMS apps. Manual implementation may be required for custom forms.
## 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](/pixel/events/lead) — For general lead capture
* [complete\_registration](/pixel/events/complete-registration) — For account creation
# Event Taxonomy
Source: https://docs.upstackdata.com/pixel/events/taxonomy
Reference for the Upstack Data event model — 25 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.
Upstack tracks 25 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).
## 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.
**Shopify stores:** The pixel is injected automatically via the theme app extension. **Custom implementations:** Add the pixel snippet to your site's `` — see [Pixel Setup](/pixel/setup).
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` |
Quiz events are **custom events** — fire them manually using the JavaScript SDK. See [quiz\_completed](/pixel/events/quiz-completed) and [quiz\_question\_answered](/pixel/events/quiz-question-answered) for implementation details.
All standard events include automatic context fields — `pageUrl`, `userAgent`, `ipAddress`, `eventTime`, and identity signals — regardless of the event type. See [Properties](/pixel/properties) for the full reference.
## 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
Full specification for every standard event — required properties, optional fields, and example payloads.
Events for subscription businesses — trials, billing, expansion, and engagement.
Define your own events to capture interactions beyond the standard taxonomy.
Complete reference for all user data, custom data, and context fields attached to events.
How Upstack ID enriches events with resolved identity data.
# trial_started Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Manual implementation required. Integrate with your subscription/trial system.
## 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](/pixel/events/sign-up) — For account creation
* [purchase](/pixel/events/purchase) — When trial converts to paid
# all_purchase Event
Source: https://docs.upstackdata.com/pixel/events/upstack-generated/all-purchase
Track all purchases with unified customer segmentation — automatically generated by Upstack
**Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually.
## 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](/pixel/standard-events#purchase) — The base purchase event
* [nc\_purchase](/pixel/events/upstack-generated/nc-purchase) — New customer purchases only
* [rc\_purchase](/pixel/events/upstack-generated/rc-purchase) — Returning customer purchases only
# AOV Purchase Events
Source: https://docs.upstackdata.com/pixel/events/upstack-generated/aov-events
Track purchases segmented by average order value — automatically generated by Upstack
**Automatically Generated** — These events are created by Upstack backend services for Shopify customers. You do not need to fire these events manually.
## 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 |
Thresholds are calculated dynamically based on your store's recent order history. As your average order value changes, the classification adjusts automatically.
## 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](/pixel/standard-events#purchase) — The base purchase event
* [nc\_purchase](/pixel/events/upstack-generated/nc-purchase) — New customer purchases
* [rc\_purchase](/pixel/events/upstack-generated/rc-purchase) — Returning customer purchases
* [all\_purchase](/pixel/events/upstack-generated/all-purchase) — All purchases
# Upstack-Generated Events
Source: https://docs.upstackdata.com/pixel/events/upstack-generated/index
Events automatically generated by Upstack backend for Shopify customers — purchase segmentation, AOV tiers, and subscription tracking
**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.
## 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](/pixel/events/upstack-generated/nc-purchase) |
| `rc_purchase` | Returning customer purchases (repeat buyers) | [Documentation](/pixel/events/upstack-generated/rc-purchase) |
| `all_purchase` | All purchases (combines NC + RC) | [Documentation](/pixel/events/upstack-generated/all-purchase) |
| `lapsed_purchase` | Purchases from lapsed customers who returned | [Documentation](/pixel/events/upstack-generated/lapsed-purchase) |
| `upsell_purchase` | Upsell conversions | [Documentation](/pixel/events/upstack-generated/upsell-purchase) |
### AOV-Segmented Events
| Event | Description | Link |
| ------------------- | ----------------------------------- | ----------------------------------------------------------- |
| `high_aov_purchase` | Purchases above average order value | [Documentation](/pixel/events/upstack-generated/aov-events) |
| `low_aov_purchase` | Purchases below average order value | [Documentation](/pixel/events/upstack-generated/aov-events) |
| `p70_aov_purchase` | Purchases above 70th percentile | [Documentation](/pixel/events/upstack-generated/aov-events) |
| `p80_aov_purchase` | Purchases above 80th percentile | [Documentation](/pixel/events/upstack-generated/aov-events) |
| `p90_aov_purchase` | Purchases above 90th percentile | [Documentation](/pixel/events/upstack-generated/aov-events) |
### Subscription Events
| Event | Description | Link |
| --------------------------------- | --------------------------------- | ----------------------------------------------------------------------------- |
| `subscription_initial_purchase` | First-time subscription purchases | [Documentation](/pixel/events/upstack-generated/subscription-purchase-events) |
| `subscription_recurring_purchase` | Recurring subscription renewals | [Documentation](/pixel/events/upstack-generated/subscription-purchase-events) |
## 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
Optimize for customer acquisition
Segment by order value
Track subscription metrics
Measure win-back campaigns
# lapsed_purchase Event
Source: https://docs.upstackdata.com/pixel/events/upstack-generated/lapsed-purchase
Track purchases from lapsed customers who returned — automatically generated by Upstack
**Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually.
## 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.
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).
## 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](/pixel/standard-events#purchase) — The base purchase event
* [nc\_purchase](/pixel/events/upstack-generated/nc-purchase) — New customer purchases
* [rc\_purchase](/pixel/events/upstack-generated/rc-purchase) — Returning customer purchases
* [all\_purchase](/pixel/events/upstack-generated/all-purchase) — All purchases
# nc_purchase Event
Source: https://docs.upstackdata.com/pixel/events/upstack-generated/nc-purchase
Track purchases from first-time customers — automatically generated by Upstack
**Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually.
## 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](/pixel/standard-events#purchase) — The base purchase event for all orders
* [rc\_purchase](/pixel/events/upstack-generated/rc-purchase) — Returning customer purchases
* [all\_purchase](/pixel/events/upstack-generated/all-purchase) — All purchases (combines NC + RC)
# rc_purchase Event
Source: https://docs.upstackdata.com/pixel/events/upstack-generated/rc-purchase
Track purchases from returning customers — automatically generated by Upstack
**Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually.
## 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](/pixel/standard-events#purchase) — The base purchase event for all orders
* [nc\_purchase](/pixel/events/upstack-generated/nc-purchase) — New customer purchases
* [all\_purchase](/pixel/events/upstack-generated/all-purchase) — All purchases (combines NC + RC)
* [lapsed\_purchase](/pixel/events/upstack-generated/lapsed-purchase) — Purchases from lapsed customers who returned
# Subscription Purchase Events
Source: https://docs.upstackdata.com/pixel/events/upstack-generated/subscription-purchase-events
Track subscription purchases — automatically generated by Upstack
**Automatically Generated** — These events are created by Upstack backend services for Shopify customers. You do not need to fire these events manually.
## Overview
Upstack automatically generates subscription purchase events for stores using subscription apps like Recharge, Bold Subscriptions, Skio, or native Shopify Subscriptions. These events help you measure subscription acquisition, retention, and recurring revenue.
## Event Types
| Event Name | Description |
| --------------------------------- | ------------------------------------------------- |
| `subscription_initial_purchase` | First-time subscription purchase (new subscriber) |
| `subscription_recurring_purchase` | Recurring subscription renewal |
## 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
### Detection Methods
Upstack identifies subscription orders through:
* Order tags from subscription apps (e.g., `subscription_first_order`, `recurring_order`)
* Order properties and line item properties containing subscription metadata
* Subscription app-specific identifiers in the order data
Subscription detection works with most major Shopify subscription apps including Recharge, Bold Subscriptions, Skio, Loop Subscriptions, and native Shopify Subscriptions.
## subscription\_initial\_purchase
Generated when a customer signs up for a new subscription. This is the first order in a subscription sequence.
### 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
## subscription\_recurring\_purchase
Generated for each recurring subscription renewal. This includes all orders after the initial subscription purchase.
### 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
Both 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
Subscription events are 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
In the Upstack dashboard, you can view:
| Metric | Description |
| -------------------------------- | ------------------------------ |
| Subscription Initial Purchases | New subscription sign-ups |
| Cost per Subscription Initial | CAC for new subscribers |
| Subscription Initial Value | Revenue from new subscriptions |
| Subscription Recurring Purchases | Renewal orders |
| Cost per Subscription Recurring | Cost attributed to renewals |
| Subscription Recurring Value | Recurring subscription revenue |
## Subscription vs. SaaS Events
**Important distinction:** These events (`subscription_initial_purchase`, `subscription_recurring_purchase`) are for e-commerce subscription boxes and recurring product purchases.
For SaaS subscription lifecycle events (plan changes, trials, etc.), see [SaaS Events](/pixel/saas-events).
| Event Type | Use For |
| --------------------------------- | ---------------------------------------------- |
| `subscription_initial_purchase` | E-commerce: First subscription box order |
| `subscription_recurring_purchase` | E-commerce: Recurring subscription box renewal |
| `subscription_started` | SaaS: New software subscription |
| `subscription_created` | SaaS: Subscription record created |
## Related Events
* [purchase](/pixel/standard-events#purchase) — The base purchase event
* [nc\_purchase](/pixel/events/upstack-generated/nc-purchase) — New customer purchases
* [rc\_purchase](/pixel/events/upstack-generated/rc-purchase) — Returning customer purchases
* [all\_purchase](/pixel/events/upstack-generated/all-purchase) — All purchases
* [SaaS Events](/pixel/saas-events) — SaaS subscription lifecycle events
# upsell_purchase Event
Source: https://docs.upstackdata.com/pixel/events/upstack-generated/upsell-purchase
Track upsell conversions — automatically generated by Upstack
**Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually.
## 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](/pixel/standard-events#purchase) — The base purchase event
* [rc\_purchase](/pixel/events/upstack-generated/rc-purchase) — Returning customer purchases
* [all\_purchase](/pixel/events/upstack-generated/all-purchase) — All purchases
* [AOV Events](/pixel/events/upstack-generated/aov-events) — Purchase segmentation by order value
# view_cart Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked when the cart page or cart drawer is viewed.
## 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](/pixel/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](/pixel/events/add-to-cart) — When adding items to cart
* [product\_removed\_from\_cart](/pixel/events/product-removed-from-cart) — When removing items
* [initiate\_checkout](/pixel/events/initiate-checkout) — When starting checkout
# view_category Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked when viewing collection pages.
## 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](/pixel/standard-events#item-object)) |
## When to Fire
* Collection page load
* Category filter applied
* Browse by category navigation
## Related Events
* [view\_content](/pixel/events/view-content) — When viewing an individual product
* [view\_item\_list](/pixel/events/view-item-list) — For general product lists (recommendations, etc.)
* [search](/pixel/events/search) — When viewing search results
# view_content Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Automatically tracked when viewing product detail pages.
## 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](/pixel/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](/pixel/events/add-to-cart) — When adding the viewed product to cart
* [add\_to\_wishlist](/pixel/events/add-to-wishlist) — When saving the product for later
* [view\_category](/pixel/events/view-category) — When viewing a collection page
# view_item_list Event
Source: https://docs.upstackdata.com/pixel/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.
**Shopify:** Manual implementation required. Not automatically tracked.
## 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](/pixel/events/view-category) — For collection/category pages
* [view\_content](/pixel/events/view-content) — When clicking through to a product
* [search](/pixel/events/search) — For search results specifically
# 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 12 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 12 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.
**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).
**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.
Merchants using Upstack ID see 30–60% more identified sessions, which directly improves retargeting audience size and conversion API match quality.
## 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
Technical details: identity fields on events, session stitching mechanics.
How to call identify() to associate user identity with sessions.
How Upstack Pixel captures the raw events that feed identity resolution.
Forward identity-enriched events to ad platforms for higher match quality.
# 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.
**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).
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.
## 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.
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.
### 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.
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.
## 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
Conceptual overview: identity graph, deterministic matching, cross-device linking.
How to call identify() to associate user identity with sessions.
Full reference for all identity fields, custom data, and context on events.
Events that carry identity data after resolution.
# Upstack Data Pixel: Event Tracking Overview
Source: https://docs.upstackdata.com/pixel/index
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.
**Works everywhere** — The Upstack Pixel runs on Shopify stores, headless storefronts, custom websites, and any platform where you can add JavaScript.
Install the pixel in 5 minutes
Full SDK reference
E-commerce event reference
All available properties
***
## 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 |
**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](/pixel/standard-events) to implement tracking manually.
# 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.
**Important:** The correct global is `window._upstack()` (with underscore), not `window.upstack()`. Older documentation may reference the incorrect name.
## Installation
The Upstack pixel is distributed via CDN, not npm. Add this snippet to your site's ``:
```html theme={null}
```
**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'` |
**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.
**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): 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,
eventId?: string,
contextOverride?: Record,
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 |
**Important:** `emails` and `phones` are arrays, not single values. This supports users with multiple contact methods.
**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,
metricId?: string
): null
```
**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.
**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
```
**Returns:** Promise resolving to `true` if the user has been identified, `false` otherwise.
**Direct Client Only:** This method is NOT available via the `_upstack()` queue. You must call it directly on `window._upsClient`.
**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
```
**Returns:** Promise resolving to an `UpstackId` object (not a string).
**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.
**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) => void;
track: (eventName: string, eventData?: Record, eventId?: string, contextOverride?: Record, collectedAt?: string, collectedAtEpoch?: number, options?: TrackOptions) => void;
identify: (userId?: string | null, data?: EventIdentityTraits) => void;
metric: (metricName: string, metricValue: number, metricData?: Record, metricId?: string) => null;
reset: () => void;
isKnown: () => Promise;
getUpstackId: () => Promise;
_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
Installation guide for non-Shopify websites and SPAs.
Complete reference for all standard events with JavaScript snippets.
Reference for item arrays, customer data, and auto-captured fields.
Create events beyond the standard taxonomy for your needs.
How identify() connects sessions to customer profiles.
Events tracked automatically on Shopify stores.
# SaaS & B2B Events Reference
Source: https://docs.upstackdata.com/pixel/saas-events
Track SaaS events with Upstack Data — subscription lifecycle, trials, payments, seat expansion, and user engagement with copyable JavaScript snippets.
These events are designed for **B2B SaaS** and **subscription-based businesses**.
If you're running an e-commerce store, see [Standard Events](/pixel/standard-events) instead.
## 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
Track `mrr` to measure trial-to-paid conversion value and calculate average revenue per converted trial.
***
## 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
Track `mrrDelta` alongside `subscription_downgraded` to calculate net revenue retention.
***
### 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
This is a **custom event name**. For standard renewal tracking, consider using `payment_succeeded` or `invoice_paid` events instead.
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
Use this event to calculate churn rate and analyze churn reasons. Track `ltv` to understand which customer segments have the highest lifetime value.
***
### 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
Use `subscription_initial_purchase` for acquisition metrics and `subscription_recurring_purchase` for retention/LTV analysis. Together they give a complete picture of subscription revenue.
***
### 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
**Klaviyo integration:** `order_shipped` is commonly used to trigger post-purchase flows like "Your order is on the way" emails with tracking information.
***
## 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
This is a **custom event name**. Track it using the [Custom Events](/pixel/custom-events) pattern if you need role change analytics.
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
Track payment failures to identify at-risk customers and trigger dunning workflows.
***
### 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.
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.
### 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
E-commerce event reference for Shopify stores.
Define your own events beyond the standard taxonomy.
Complete reference for all event fields.
How events flow through the Upstack pipeline.
# account_created Event
Source: https://docs.upstackdata.com/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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.
Past due invoices are an early indicator of involuntary churn. Use this event to trigger proactive outreach.
# milestone_reached Event
Source: https://docs.upstackdata.com/pixel/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/pixel/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/pixel/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
**Klaviyo integration:** `order_shipped` is commonly used to trigger post-purchase flows like "Your order is on the way" emails with tracking information.
# payment_failed Event
Source: https://docs.upstackdata.com/pixel/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`.
Track payment failures to identify at-risk customers and trigger dunning workflows.
# payment_refunded Event
Source: https://docs.upstackdata.com/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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`.
Use this event to calculate churn rate and analyze churn reasons. Track `ltv` to understand which customer segments have the highest lifetime value.
# subscription_created Event
Source: https://docs.upstackdata.com/pixel/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/pixel/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/pixel/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
Use `subscription_initial_purchase` for acquisition metrics and `subscription_recurring_purchase` for retention/LTV analysis. Together they give a complete picture of subscription revenue.
# subscription_paused Event
Source: https://docs.upstackdata.com/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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.
Track `mrrDelta` alongside `subscription_downgraded` to calculate net revenue retention.
# trial_activated Event
Source: https://docs.upstackdata.com/pixel/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/pixel/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
Track `mrr` to measure trial-to-paid conversion value and calculate average revenue per converted trial.
# trial_ending_soon Event
Source: https://docs.upstackdata.com/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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/pixel/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
# 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 `` tag:
```html theme={null}
```
Replace `YOUR_PIXEL_ID` with your actual pixel ID from the [Upstack dashboard](https://app.upstackdata.com). Your pixel ID starts with `px_`.
### 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 `` section on every page:
```html theme={null}
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/shopify/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.
# Upstack Data Standard Events Reference
Source: https://docs.upstackdata.com/pixel/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.
**This guide applies to all Upstack implementations** — Shopify, headless, GTM, or custom websites. The JavaScript snippets below work everywhere the Upstack pixel is installed.
**Shopify stores:** Most events are tracked automatically by the Upstack Pixel. See [Automatic Shopify Tracking](/sources/shopify-automatic-tracking) to understand what's already tracked. Use these snippets for custom implementations, headless checkouts, or events not covered by automatic tracking.
***
## 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.
**Shopify:** Automatically tracked when viewing product detail pages.
### 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.
**Shopify:** Automatically tracked when viewing collection pages.
### 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');
```
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.
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) |
**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.
### When to Fire
* Order confirmation page load
* After successful payment confirmation
* Shopify `orders/create` webhook (server-side)
***
## 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'`) |
**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.
### 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 | — |
**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
***
## 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 [Custom Events](/pixel/custom-events#upstack-native-custom-purchase-events) |
| Shopify automatic events | See [Shopify Automatic Tracking](/sources/shopify-automatic-tracking) |
| SaaS events | See [SaaS Events Reference](/pixel/saas-events) |
| Custom events | See [Custom Events](/pixel/custom-events) |
## Related Documentation
Events that fire automatically on Shopify stores — check what's already tracked.
Full SDK API reference including `identify()` and direct client methods.
Complete reference for item arrays, customer data, and auto-captured fields.
Create events beyond the standard taxonomy, including Upstack-generated events like `nc_purchase`.
# Blended CPM: Cost Per 1,000 Impressions Across Channels
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-audience/blended-cpm
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** ÷ **Blended Impressions** ) × 1,000
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total amount spent on advertising across all platforms |
| [**Blended Impressions**](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Total number of times ads were displayed across all platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | The numerator in CPM calculation |
| [Blended Impressions](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | The denominator in CPM calculation |
| [Blended CPC](/reference/metrics/advertising/blended/blended-clicks/blended-cpc) | Cost efficiency measured by clicks instead of impressions |
[See all Blended Audience metrics →](/reference/metrics/advertising/blended/blended-audience)
# Blended CPP: Cost Per Person Reached
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-audience/blended-cpp
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** ÷ **Blended Reach**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------ | -------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total amount spent on advertising across all channels |
| [**Blended Reach**](/reference/metrics/advertising/blended/blended-audience/blended-reach) | Total unique people who saw your ads across all channels |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator in CPP calculation |
| [Blended Reach](/reference/metrics/advertising/blended/blended-audience/blended-reach) | Denominator in CPP calculation |
| [Blended CPM](/reference/metrics/advertising/blended/blended-audience/blended-cpm) | Alternative audience cost metric (per 1,000 impressions) |
[See all Blended Audience metrics →](/reference/metrics/advertising/blended/blended-audience)
# Blended Frequency: Average Ad Views per User
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-audience/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** ÷ **Blended Reach**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------- |
| [**Blended Impressions**](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Total ad views across all channels |
| [**Blended Reach**](/reference/metrics/advertising/blended/blended-audience/blended-reach) | Unique users who saw your ads across all channels |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-audience/blended-impressions) | Numerator in the frequency calculation |
| [Blended Reach](/reference/metrics/advertising/blended/blended-audience/blended-reach) | Denominator in the frequency calculation |
| [Blended CPM](/reference/metrics/advertising/blended/blended-audience/blended-cpm) | Cost efficiency at current frequency level |
[See all Blended Audience metrics →](/reference/metrics/advertising/blended/blended-audience)
# Blended Impressions: Total Ad Views Across All Channels
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-audience/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/meta-audience/meta-impressions) | Number of times your Meta ads were displayed |
| [**Google Impressions**](/reference/metrics/advertising/google/google-audience/google-impressions) | Number of times your Google ads were displayed |
| [**TikTok Impressions**](/reference/metrics/advertising/tiktok/tiktok-audience/tiktok-impressions) | Number of times your TikTok ads were displayed |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-audience/blended-reach) | Unique users who saw your ads (impressions ÷ frequency) |
| [Blended CPM](/reference/metrics/advertising/blended/blended-audience/blended-cpm) | Cost per 1,000 impressions |
| [Blended Frequency](/reference/metrics/advertising/blended/blended-audience/blended-frequency) | Average impressions per unique user |
[See all Blended Audience metrics →](/reference/metrics/advertising/blended/blended-audience)
# Blended Reach: Cross-Platform Audience Size
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-audience/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-audience/blended-impressions) | Total ad views (Reach counts unique users) |
| [Blended Frequency](/reference/metrics/advertising/blended/blended-audience/blended-frequency) | Impressions ÷ Reach (average views per user) |
| [Blended CPP](/reference/metrics/advertising/blended/blended-audience/blended-cpp) | Spend ÷ Reach (cost per person reached) |
[See all Blended Audience metrics →](/reference/metrics/advertising/blended/blended-audience)
# Blended Audience Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-audience/index
Cross-platform audience metrics for reach, impressions, and frequency across Meta, Google, and TikTok. Track total ad exposure and cost efficiency in one view.
Blended Audience metrics aggregate reach, impressions, frequency, and audience costs from all connected advertising platforms. Understand your total ad exposure without checking each platform separately.
**Data Sources:** [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/tiktok)\
**Metrics:** 5
## Metrics in This Group
| Metric | Description | When to Use |
| -------------------------------------------------------------------------------------------------- | -------------------------------------------------- | --------------------------------------- |
| [Blended Impressions](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Total ad views across all platforms | Measure total ad exposure and scale |
| [Blended Reach](/reference/metrics/advertising/blended/blended-audience/blended-reach) | Unique users who saw your ads across all platforms | Measure total audience size |
| [Blended Frequency](/reference/metrics/advertising/blended/blended-audience/blended-frequency) | Average times each person saw your ads | Detect ad fatigue and optimize delivery |
| [Blended CPM](/reference/metrics/advertising/blended/blended-audience/blended-cpm) | Cost per 1,000 impressions across all platforms | Evaluate delivery cost efficiency |
| [Blended CPP](/reference/metrics/advertising/blended/blended-audience/blended-cpp) | Cost per person reached across all platforms | Measure cost efficiency per unique user |
## How These Metrics Relate
* **Blended Impressions** counts every ad view across platforms
* **Blended Reach** counts unique individuals across platforms
* **Blended Frequency** = Impressions ÷ Reach — average views per person
* **Blended CPM** = Spend ÷ Impressions × 1,000 — measures delivery cost
* **Blended CPP** = Spend ÷ Reach — cost per person reached
## Platform Overlap
Users may see ads on multiple platforms. Platform totals may exceed blended totals because:
* A user who sees ads on both Meta and TikTok counts once in Blended Reach
* Platform-specific reach counts them separately in each platform's metrics
Blended metrics provide the most accurate total audience picture.
# Blended Clicks: Total Ad Clicks Across All Platforms
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/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/meta-clicks/meta-clicks) | Clicks from Meta Ads campaigns |
| [**Google Clicks**](/reference/metrics/advertising/google/google-clicks/google-clicks) | Clicks from Google Ads campaigns |
| [**TikTok Clicks**](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-clicks) | Clicks from TikTok Ads campaigns |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-clicks/blended-ctr) | Click-through rate using this as the numerator |
| [Blended CPC](/reference/metrics/advertising/blended/blended-clicks/blended-cpc) | Cost efficiency using this as the denominator |
| [Blended Impressions](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Total ad views — clicks ÷ impressions = CTR |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Cost Per Landing Page View: Ad Efficiency Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/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** ÷ **Blended Landing Page Views**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend aggregated across all platforms |
| [**Blended Landing Page Views**](/reference/metrics/advertising/blended/blended-clicks/blended-landing-page-views) | Landing page views from clicks across all platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator—total ad cost |
| [Blended Landing Page Views](/reference/metrics/advertising/blended/blended-clicks/blended-landing-page-views) | Denominator—successful page loads |
| [Blended CPC](/reference/metrics/advertising/blended/blended-clicks/blended-cpc) | Compare to see click vs load efficiency |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Cost Per Outbound Click: Cross-Platform Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/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** ÷ **Blended Outbound Clicks**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total advertising spend across all connected ad platforms |
| [**Blended Outbound Clicks**](/reference/metrics/advertising/blended/blended-clicks/blended-outbound-clicks) | Clicks that lead users off the ad platform to your website |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator in the formula |
| [Blended Outbound Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-outbound-clicks) | Denominator in the formula |
| [Blended CPC](/reference/metrics/advertising/blended/blended-clicks/blended-cpc) | Similar metric using all clicks instead of outbound only |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Cost Per Unique Click: Cost Per Unique Ad Clicker
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/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** ÷ **Blended Unique Clicks**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Combined ad spend across all connected advertising platforms |
| [**Blended Unique Clicks**](/reference/metrics/advertising/blended/blended-clicks/blended-unique-clicks) | Distinct people who clicked ads at least once across all platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator — total cost across platforms |
| [Blended Unique Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-unique-clicks) | Denominator — distinct clickers |
| [Blended CPC](/reference/metrics/advertising/blended/blended-clicks/blended-cpc) | Total click cost (includes repeat clicks) |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended CPC: Average Cost Per Click Across All Ad Platforms
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/blended-cpc
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** ÷ **Blended Clicks**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------ | -------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Combined ad spend across all platforms |
| [**Blended Clicks**](/reference/metrics/advertising/blended/blended-clicks/blended-clicks) | Total clicks across all platforms |
| Metadata | |
| --------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator — total cost across platforms |
| [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-clicks) | Denominator — total clicks across platforms |
| [Blended CTR](/reference/metrics/advertising/blended/blended-clicks/blended-ctr) | Measures click rate; CPC shows click cost |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended CPC (Link): Cost Per Link Click Across Channels
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/blended-cpc-link
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** ÷ **Blended Link Clicks**
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend aggregated across all channels |
| [**Blended Link Clicks**](/reference/metrics/advertising/blended/blended-clicks/blended-link-clicks) | Total link clicks aggregated across all channels |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | The numerator in this calculation |
| [Blended Link Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-link-clicks) | The denominator in this calculation |
| [Blended CPC](/reference/metrics/advertising/blended/blended-clicks/blended-cpc) | Cost per total click (includes all click types) |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended CTR: Click-Through Rate Across All Channels
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/blended-ctr
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** ÷ **Blended Impressions** ) × 100
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------- |
| [**Blended Clicks**](/reference/metrics/advertising/blended/blended-clicks/blended-clicks) | Total clicks across Meta, Google, and TikTok ads |
| [**Blended Impressions**](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Total impressions across all advertising channels |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-clicks) | Numerator in CTR calculation |
| [Blended Impressions](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Denominator in CTR calculation |
| [Blended CPC](/reference/metrics/advertising/blended/blended-clicks/blended-cpc) | Cost efficiency of each click |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Inline Link Clicks: Clicks on Embedded Ad Links
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-clicks/blended-link-clicks) | All link clicks (includes inline, outbound, CTA) |
| [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-clicks) | Total clicks of all types on ads |
| [Blended Outbound Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-outbound-clicks) | Clicks that lead users off-platform |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Landing Page Views: Successful Post-Click Site Visits
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-clicks/blended-link-clicks) | Clicks that lead to landing page views |
| [Blended Outbound Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-outbound-clicks) | Clicks that leave the ad platform |
| [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-clicks) | Total clicks including non-link interactions |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Link Clicks: Total Ad Link Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/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/meta-clicks/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-clicks) | Total clicks including non-link interactions |
| [Blended Outbound Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-outbound-clicks) | Clicks that leave the ad platform |
| [Blended Landing Page Views](/reference/metrics/advertising/blended/blended-clicks/blended-landing-page-views) | Users who actually reached your landing page |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Link CTR: Link Click-Through Rate Across All Channels
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/blended-link-ctr
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** ÷ **Blended Impressions** ) × 100
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------- |
| [**Blended Link Clicks**](/reference/metrics/advertising/blended/blended-clicks/blended-link-clicks) | Total link clicks across Meta, Google, and TikTok ads |
| [**Blended Impressions**](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Total impressions across all advertising channels |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-clicks/blended-link-clicks) | Numerator in Link CTR calculation |
| [Blended Impressions](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Denominator in Link CTR calculation |
| [Blended CTR](/reference/metrics/advertising/blended/blended-clicks/blended-ctr) | Includes all clicks, not just link clicks |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Outbound Clicks: Off-Platform Click Tracking
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-clicks/blended-link-clicks) | All link clicks including in-platform; outbound is a subset |
| [Blended Landing Page Views](/reference/metrics/advertising/blended/blended-clicks/blended-landing-page-views) | Users who fully loaded your page after an outbound click |
| [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-clicks) | Total clicks of all types; outbound focuses on external traffic |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Outbound CTR: External Click-Through Rate
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/blended-outbound-ctr
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** ÷ **Blended Impressions** ) × 100
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------ |
| [**Blended Outbound Clicks**](/reference/metrics/advertising/blended/blended-clicks/blended-outbound-clicks) | Clicks that drove users from ad platforms to your site |
| [**Blended Impressions**](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Total impressions across all advertising channels |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-clicks/blended-outbound-clicks) | Numerator in outbound CTR calculation |
| [Blended Impressions](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Denominator in outbound CTR calculation |
| [Blended CTR](/reference/metrics/advertising/blended/blended-clicks/blended-ctr) | Total CTR including in-platform clicks |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Unique Clicks: Deduplicated Ad Clicks
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-clicks) | Total clicks including repeats from same user |
| [Blended Unique CTR](/reference/metrics/advertising/blended/blended-clicks/blended-unique-ctr) | Percentage of impressions resulting in unique clicks |
| [Blended Cost per Unique Click](/reference/metrics/advertising/blended/blended-clicks/blended-cost-per-unique-click) | Average cost to acquire each unique clicker |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Unique CTR: Percentage of Reach That Clicked
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/blended-unique-ctr
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** ÷ **Blended Reach** ) × 100
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| [**Blended Unique Clicks**](/reference/metrics/advertising/blended/blended-clicks/blended-unique-clicks) | Distinct people who clicked at least once across all platforms |
| [**Blended Reach**](/reference/metrics/advertising/blended/blended-audience/blended-reach) | Unique users who saw your ads across all platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-clicks/blended-unique-clicks) | Numerator — unique clickers |
| [Blended Reach](/reference/metrics/advertising/blended/blended-audience/blended-reach) | Denominator — unique users reached |
| [Blended CTR](/reference/metrics/advertising/blended/blended-clicks/blended-ctr) | Impression-based CTR alternative |
[See all Blended Clicks metrics →](/reference/metrics/advertising/blended/blended-clicks)
# Blended Clicks: Aggregated Click Performance
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks/index
Track click performance metrics across all ad platforms. Includes Blended Clicks, Blended CPC, Blended CTR, and landing page view metrics.
Click metrics measure user engagement with ads across all connected platforms—total clicks, click-through rates, and costs per click.
**Data Source:** Meta Ads, Google Ads, TikTok Ads (aggregated)\
**Metrics:** 18
## Metrics in This Group
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------- | ------------------------------- |
| [Blended Total Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-clicks) | Number of clicks on ads across all channels | Measure total click volume |
| [Blended CPC](/reference/metrics/advertising/blended/blended-clicks/blended-cpc) | Cost per click across all channels | Evaluate click cost efficiency |
| [Blended CTR](/reference/metrics/advertising/blended/blended-clicks/blended-ctr) | Click-through rate across all channels | Compare creative performance |
| [Blended Unique Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-unique-clicks) | Unique people who clicked across all channels | Count distinct clickers |
| [Blended Unique Click CTR](/reference/metrics/advertising/blended/blended-clicks/blended-unique-click-ctr) | Unique click-through rate | Filter out repeat clicks |
| [Blended Cost per Unique Click](/reference/metrics/advertising/blended/blended-clicks/blended-cost-per-unique-click) | Cost per unique click | Cost to engage new clickers |
| [Blended Inline Link Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-inline-link-clicks) | Inline link clicks across all channels | Measure in-ad link engagement |
| [Blended Inline CTR](/reference/metrics/advertising/blended/blended-clicks/blended-inline-ctr) | Inline link click-through rate | Evaluate in-ad link performance |
| [Blended Cost per Inline Link Click](/reference/metrics/advertising/blended/blended-clicks/blended-cost-per-inline-link-click) | Cost per inline link click | Cost for in-ad links |
| [Blended Outbound Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-outbound-clicks) | Clicks leading off-platform | Measure external traffic |
| [Blended Outbound Click CTR](/reference/metrics/advertising/blended/blended-clicks/blended-outbound-click-ctr) | Outbound click-through rate | Evaluate outbound performance |
| [Blended Cost per Outbound Click](/reference/metrics/advertising/blended/blended-clicks/blended-cost-per-outbound-click) | Cost per outbound click | Cost for external traffic |
| [Blended Link Clicks](/reference/metrics/advertising/blended/blended-clicks/blended-link-clicks) | Link clicks across all channels | Measure link engagement |
| [Blended Link Click CTR](/reference/metrics/advertising/blended/blended-clicks/blended-link-click-ctr) | Link click-through rate | Evaluate link performance |
| [Blended Cost per Link Click](/reference/metrics/advertising/blended/blended-clicks/blended-cost-per-link-click) | Cost per link click | Cost per link engagement |
| [Blended Landing Page Views](/reference/metrics/advertising/blended/blended-clicks/blended-landing-page-views) | Landing page views from ads | Measure site visits |
| [Blended Cost per LP View](/reference/metrics/advertising/blended/blended-clicks/blended-cost-per-landing-page-view) | Cost per landing page view | Cost per site visit |
| [Blended LP View Rate](/reference/metrics/advertising/blended/blended-clicks/blended-landing-page-view-rate) | Landing page view rate | Click-to-visit conversion |
## How These Metrics Relate
Click metrics progress from raw clicks to qualified site visits:
* **Total Clicks** includes all interactions
* **Unique Clicks** filters to distinct people
* **Link Clicks** focuses on destination-driving clicks
* **Landing Page Views** confirms the page actually loaded
CTR metrics = Clicks ÷ Impressions × 100
Cost metrics = Spend ÷ Clicks
## Choosing the Right Metric
* **Traffic campaigns**: Focus on Link Clicks and Landing Page Views
* **Engagement analysis**: Use Total Clicks and CTR
* **Cost efficiency**: Compare CPC across campaigns
* **Quality assessment**: Landing Page View Rate shows click-to-visit conversion
# Blended Add to Carts: Cross-Platform Shopping Intent
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/meta-conversions/meta-add-to-carts) | Add-to-cart events attributed to Meta Ads campaigns |
| [**Google Add to Carts**](/reference/metrics/advertising/google/google-conversions/google-add-to-carts) | Add-to-cart events attributed to Google Ads campaigns |
| [**TikTok Add to Carts**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts) | Add-to-cart events attributed to TikTok Ads campaigns |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-view-contents) | Earlier funnel stage — product page views |
| [Blended Initiate Checkouts](/reference/metrics/advertising/blended/blended-conversions/blended-initiate-checkouts) | Next funnel stage — checkout starts |
| [Blended Purchases](/reference/metrics/advertising/blended/blended-conversions/blended-purchases) | Final funnel stage — completed orders |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Add to Carts Value: Cross-Platform Cart Value
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/tiktok-conversions/tiktok-add-to-carts-value) | Monetary value of items added to cart from TikTok ads |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-add-to-carts) | Count of add-to-cart events; this metric shows their value |
| [Blended Purchases Value](/reference/metrics/advertising/blended/blended-conversions/blended-purchases-value) | Revenue from completed purchases |
| [Blended Initiate Checkouts Value](/reference/metrics/advertising/blended/blended-conversions/blended-initiate-checkouts-value) | Value of checkout starts |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Add to Wishlists: Cross-Platform Wishlist Intent
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/tiktok-conversions/tiktok-add-to-wishlists) | Wishlist additions attributed to TikTok Ads campaigns |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-view-contents) | Previous funnel step before wishlist |
| [Blended Add to Carts](/reference/metrics/advertising/blended/blended-conversions/blended-add-to-carts) | Next funnel step after wishlist |
| [Blended Purchases](/reference/metrics/advertising/blended/blended-conversions/blended-purchases) | Final conversion from wishlist users |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended All Conversions: Total Conversions Across Platforms
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-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 ) **ACROSS** Meta + Google + TikTok
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
| [**Meta Conversions**](/reference/metrics/advertising/meta/meta-conversions) | Conversions attributed to Meta Ads campaigns |
| [**Google All Conversions**](/reference/metrics/advertising/google/google-conversions/google-all-conversions) | Conversions attributed to Google Ads campaigns |
| [**TikTok Conversions**](/reference/metrics/advertising/tiktok/tiktok-conversions) | Conversions attributed to TikTok Ads campaigns |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-all-conversions-value) | Total monetary value of these conversions |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Blended Spend ÷ Blended All Conversions |
| [Blended Purchases](/reference/metrics/advertising/blended/blended-conversions/blended-purchases) | Subset counting only purchase conversions |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended All Conversions Value: Total Revenue Across Platforms
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-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**](/reference/metrics/advertising/meta/meta-conversions/meta-all-conversions-value) | Total value of conversions attributed to Meta Ads |
| [**Google Conversions Value**](/reference/metrics/advertising/google/google-conversions/google-conversions-value) | Total value of conversions attributed to Google Ads |
| [**TikTok Conversions Value**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-conversions-value) | Total value of conversions attributed to TikTok Ads |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Total cost across platforms — compare to conversion value for efficiency |
| [Blended ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-roas) | Blended All Conversions Value ÷ Blended Spend |
| [Blended All Conversions](/reference/metrics/advertising/blended/blended-conversions/blended-all-conversions) | Total number of conversions (not value) |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended App Installs: Cross-Platform Mobile Downloads
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/meta-conversions/meta-app-installs) | App installs attributed to Meta Ads campaigns |
| [**Google App Installs**](/reference/metrics/advertising/google/google-conversions/google-app-installs) | App installs attributed to Google Ads campaigns |
| [**TikTok App Installs**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-app-installs) | App installs attributed to TikTok Ads campaigns |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-cost-per-app-install) | Cost efficiency for each app download |
| [Blended Completed Registrations](/reference/metrics/advertising/blended/blended-conversions/blended-completed-registrations) | In-app signups after install |
| [Blended Leads](/reference/metrics/advertising/blended/blended-conversions/blended-leads) | Lead generation conversions |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Application Submissions: Applications Across All Platforms
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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**](/reference/metrics/advertising/meta/meta-conversions/meta-application-submissions) | Application events attributed to Meta Ads campaigns |
| [**Google Application Submissions**](/reference/metrics/advertising/google/google-conversions/google-application-submissions) | Application events attributed to Google Ads campaigns |
| [**TikTok Application Submissions**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-application-submissions) | Application events attributed to TikTok Ads campaigns |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-all-conversions) | Broader metric including all conversion types |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Blended Spend ÷ Blended All Conversions |
| [Blended Leads](/reference/metrics/advertising/blended/blended-conversions/blended-leads) | Related lead generation metric across platforms |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Appointments Scheduled: Aggregated Booking Conversions
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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**](/reference/metrics/advertising/meta/meta-conversions/meta-appointments-scheduled) | Appointments from Meta Ads campaigns |
| [**Google Appointments Scheduled**](/reference/metrics/advertising/google/google-conversions/google-appointments-scheduled) | Appointments from Google Ads campaigns |
| [**TikTok Appointments Scheduled**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-appointments-scheduled) | Appointments from TikTok Ads campaigns |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-leads) | Broader lead metric that includes appointments |
| [Blended Completed Registrations](/reference/metrics/advertising/blended/blended-conversions/blended-completed-registrations) | Related conversion event for signups |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Cost per acquisition for these conversions |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Completed Registrations: Cross-Channel Registration Tracking
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/meta-conversions/meta-completed-registrations) | Registrations attributed to Meta Ads campaigns |
| [**Google Completed Registrations**](/reference/metrics/advertising/google/google-conversions/google-completed-registrations) | Registrations attributed to Google Ads campaigns |
| [**TikTok Completed Registrations**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-completed-registrations) | Registrations attributed to TikTok Ads campaigns |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/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/blended-conversions/blended-leads) to registrations for funnel insights |
***
## Related Metrics
| Metric | Relationship |
| --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [Blended Cost per Completed Registration](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-completed-registration) | Cost efficiency of acquiring registrations |
| [Blended Leads](/reference/metrics/advertising/blended/blended-conversions/blended-leads) | Earlier funnel stage — leads before registration |
| [Blended Spend](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend driving these registrations |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Cost per Add to Cart: Cross-Platform ATC Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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-spend) ÷ [**Blended Add to Carts**](/reference/metrics/advertising/blended/blended-conversions/blended-add-to-carts)
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total advertising spend across all connected ad platforms |
| [**Blended Add to Carts**](/reference/metrics/advertising/blended/blended-conversions/blended-add-to-carts) | Total add-to-cart events attributed across all ad platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator — total ad spend across platforms |
| [Blended Add to Carts](/reference/metrics/advertising/blended/blended-conversions/blended-add-to-carts) | Denominator — total cart events across platforms |
| [Blended Cost per Purchase](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-purchase) | Downstream efficiency — cost to convert cart to purchase |
| [Blended ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-roas) | Revenue efficiency — return on combined ad spend |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Cost per App Install: Cross-Platform Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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-spend) ÷ [**Blended App Installs**](/reference/metrics/advertising/blended/blended-conversions/blended-app-installs)
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total advertising spend across Meta, Google, and TikTok combined |
| [**Blended App Installs**](/reference/metrics/advertising/blended/blended-conversions/blended-app-installs) | Total app installs attributed across all advertising platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator — total cost driving app installs |
| [Blended App Installs](/reference/metrics/advertising/blended/blended-conversions/blended-app-installs) | Denominator — total installs acquired |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Similar efficiency metric for all conversions |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Cost per Completed Registration: Aggregate Registration Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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-spend) ÷ [**Blended Completed Registrations**](/reference/metrics/advertising/blended/blended-conversions/blended-completed-registrations)
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend across Meta, Google, and TikTok |
| [**Blended Completed Registrations**](/reference/metrics/advertising/blended/blended-conversions/blended-completed-registrations) | Total registration completions attributed to your ads |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator in the formula |
| [Blended Completed Registrations](/reference/metrics/advertising/blended/blended-conversions/blended-completed-registrations) | Denominator in the formula |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Cost per acquisition (all conversions, not just registrations) |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Cost per Initiate Checkout: Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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-spend) ÷ [**Blended Initiate Checkouts**](/reference/metrics/advertising/blended/blended-conversions/blended-initiate-checkouts)
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend aggregated across all connected platforms |
| [**Blended Initiate Checkouts**](/reference/metrics/advertising/blended/blended-conversions/blended-initiate-checkouts) | Total checkout initiations attributed to ads across all platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator in calculation |
| [Blended Initiate Checkouts](/reference/metrics/advertising/blended/blended-conversions/blended-initiate-checkouts) | Denominator in calculation |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Compare checkout cost vs purchase cost |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Cost per Lead: Cross-Platform Lead Acquisition Cost
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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-spend) ÷ [**Blended Leads**](/reference/metrics/advertising/blended/blended-conversions/blended-leads)
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total advertising spend across all connected ad platforms |
| [**Blended Leads**](/reference/metrics/advertising/blended/blended-conversions/blended-leads) | Total lead conversions attributed across all ad platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator — total ad spend across platforms |
| [Blended Leads](/reference/metrics/advertising/blended/blended-conversions/blended-leads) | Denominator — total leads across platforms |
| [Blended Cost per Acquisition](/reference/metrics/advertising/blended/blended-conversions/blended-cpa) | Similar efficiency metric for purchases instead of leads |
| [Blended ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-roas) | Revenue efficiency metric for overall ad performance |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Cost per Search: Cross-Platform Search Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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-spend) ÷ [**Blended Searches**](/reference/metrics/advertising/blended/blended-conversions/blended-searches)
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total advertising spend across all connected ad platforms |
| [**Blended Searches**](/reference/metrics/advertising/blended/blended-conversions/blended-searches) | Total on-site search events attributed across all ad platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator — total ad spend across platforms |
| [Blended Searches](/reference/metrics/advertising/blended/blended-conversions/blended-searches) | Denominator — total search events across platforms |
| [Blended Cost per View Content](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-view-content) | Downstream efficiency — cost to drive product page views |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Conversion efficiency — cost per attributed conversion |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Cost per Subscription: Ad Efficiency Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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-spend) ÷ [**Blended Subscriptions**](/reference/metrics/advertising/blended/blended-conversions/blended-subscriptions)
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total advertising spend aggregated across all connected ad platforms |
| [**Blended Subscriptions**](/reference/metrics/advertising/blended/blended-conversions/blended-subscriptions) | Subscription sign-ups attributed to ads across Meta, Google, and TikTok |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator — total advertising cost |
| [Blended Subscriptions](/reference/metrics/advertising/blended/blended-conversions/blended-subscriptions) | Denominator — subscription sign-ups |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | All-conversion cost efficiency metric |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Cost per Trial Start: Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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-spend) ÷ [**Blended Trial Starts**](/reference/metrics/advertising/blended/blended-conversions/blended-trial-starts)
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total advertising spend across all platforms |
| [**Blended Trial Starts**](/reference/metrics/advertising/blended/blended-conversions/blended-trial-starts) | Free trial signups attributed to your ads |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator — total ad spend |
| [Blended Trial Starts](/reference/metrics/advertising/blended/blended-conversions/blended-trial-starts) | Denominator — trial signups |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Similar efficiency metric for all conversions |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Cost per View Content: Cross-Platform Content View Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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-spend) ÷ [**Blended View Contents**](/reference/metrics/advertising/blended/blended-conversions/blended-view-contents)
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total advertising spend across all connected ad platforms |
| [**Blended View Contents**](/reference/metrics/advertising/blended/blended-conversions/blended-view-contents) | Total content view events attributed across all ad platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator — total ad spend across platforms |
| [Blended View Contents](/reference/metrics/advertising/blended/blended-conversions/blended-view-contents) | Denominator — total content view events across platforms |
| [Blended Cost per Add to Cart](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-add-to-cart) | Downstream efficiency — cost to convert view to cart action |
| [Blended ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-roas) | Revenue efficiency — return on combined ad spend |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Initiate Checkouts: Cross-Platform Checkout Intent
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/meta-conversions/meta-initiate-checkouts) | Checkout initiations attributed to Meta ads |
| [**Google Initiate Checkouts**](/reference/metrics/advertising/google/google-conversions/google-initiate-checkouts) | Checkout initiations attributed to Google ads |
| [**TikTok Initiate Checkouts**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-initiate-checkouts) | Checkout initiations attributed to TikTok ads |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-add-to-carts) | Earlier funnel stage — cart additions |
| [Blended Purchases](/reference/metrics/advertising/blended/blended-conversions/blended-purchases) | Next funnel stage — completed orders |
| [Blended Cost per Initiate Checkout](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-initiate-checkout) | Efficiency metric — spend per checkout start |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Initiate Checkouts Value: Cross-Platform Checkout Intent
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/tiktok-conversions/tiktok-initiate-checkouts-value) | Monetary value of checkout initiations from TikTok ads |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-initiate-checkouts) | Count of checkout initiations; this metric shows their value |
| [Blended Purchases Value](/reference/metrics/advertising/blended/blended-conversions/blended-purchases-value) | Completed purchase value (downstream conversion) |
| [Blended Add to Carts Value](/reference/metrics/advertising/blended/blended-conversions/blended-add-to-carts-value) | Value at cart addition (upstream funnel step) |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Leads: Cross-Channel Lead Tracking
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/meta-conversions/meta-leads) | Lead submission events from Meta Ads campaigns |
| [**Google Leads**](/reference/metrics/advertising/google/google-conversions/google-leads) | Lead submission events from Google Ads campaigns |
| [**TikTok Leads**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-leads) | Lead submission events from TikTok Ads campaigns |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/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/blended-conversions/blended-cost-per-lead) | Cost efficiency metric using leads as the denominator |
| [Blended Completed Registrations](/reference/metrics/advertising/blended/blended-conversions/blended-completed-registrations) | Tracks registrations that follow lead capture |
| [Blended Spend](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend driving these leads |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended New Customer Purchases: First-Time Buyer Conversions
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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 ) **WHERE** customer = new **AND** attributed = true
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| [**Blended Purchases**](/reference/metrics/advertising/blended/blended-conversions/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-purchases) | Total purchases (new + returning customers) |
| [Blended NC CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-new-customer-cpa) | Cost to acquire each new customer |
| [Blended NC ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-new-customer-roas) | Revenue efficiency from new customer purchases |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended New Customer Purchases Value: Revenue from First-Time Buyers
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/blended-conversions/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-conversions/blended-new-customer-purchases) | Count of NC purchases; this metric sums their values |
| [Blended New Customer ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-new-customer-roas) | NC Purchases Value ÷ Ad Spend |
| [Blended Purchases Value](/reference/metrics/advertising/blended/blended-conversions/blended-purchases-value) | Total purchase value including new and returning customers |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Purchases: Cross-Channel Conversion Tracking
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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 ) **ACROSS** All Channels
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------- | --------------------------------------------- |
| [**Meta Purchases**](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Purchase conversions attributed to Meta ads |
| [**Google Purchases**](/reference/metrics/advertising/google/google-conversions/google-purchases) | Purchase conversions attributed to Google ads |
| [**TikTok Purchases**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases) | Purchase conversions attributed to TikTok ads |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-purchases-value) | Revenue from these purchases |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Cost per purchase (Spend ÷ Purchases) |
| [Blended ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-roas) | Return on ad spend using these conversions |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Purchases Value: Total Revenue from Ad-Attributed Purchases
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/meta-conversions/meta-purchases-value) | Revenue from purchases attributed to Meta ads |
| [**Google Purchases Value**](/reference/metrics/advertising/google/google-conversions/google-purchases-value) | Revenue from purchases attributed to Google ads |
| [**TikTok Purchases Value**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases-value) | Revenue from purchases attributed to TikTok ads |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-purchases) | Count of purchases; this metric shows their value |
| [Blended ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-roas) | Uses this metric as the numerator |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Cost efficiency; this metric shows revenue efficiency |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Searches: Cross-Platform Site Search Tracking
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/meta-conversions/meta-search-events) | On-site search events attributed to Meta Ads campaigns |
| [**Google Searches**](/reference/metrics/advertising/google/google-conversions/google-searches) | On-site search events attributed to Google Ads campaigns |
| [**TikTok Searches**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-searches) | On-site search events attributed to TikTok Ads campaigns |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-cost-per-search) | Efficiency metric showing cost to generate each search |
| [Blended View Contents](/reference/metrics/advertising/blended/blended-conversions/blended-view-contents) | Next funnel stage — product page views |
| [Blended Add to Carts](/reference/metrics/advertising/blended/blended-conversions/blended-add-to-carts) | Further down funnel — cart additions |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Subscriptions: Track Subscription Sign-Ups Across Platforms
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-trial-starts) | Users who started trials before subscribing |
| [Blended Purchases](/reference/metrics/advertising/blended/blended-conversions/blended-purchases) | One-time purchases vs recurring subscriptions |
| [Blended Cost per Subscription](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-subscription) | Cost to acquire each subscription |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Trial Starts: Cross-Channel Trial Tracking
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/meta-conversions/meta-trial-starts) | Free trials attributed to Meta Ads campaigns |
| [**Google Trial Starts**](/reference/metrics/advertising/google/google-conversions/google-trial-starts) | Free trials attributed to Google Ads campaigns |
| [**TikTok Trial Starts**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-trial-starts) | Free trials attributed to TikTok Ads campaigns |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/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/blended-conversions/blended-subscriptions) for conversion insights |
***
## Related Metrics
| Metric | Relationship |
| ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [Blended Cost Per Trial Start](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-trial-start) | Cost efficiency of acquiring trials |
| [Blended Subscriptions](/reference/metrics/advertising/blended/blended-conversions/blended-subscriptions) | Later funnel stage — trials that convert to paid |
| [Blended Completed Registrations](/reference/metrics/advertising/blended/blended-conversions/blended-completed-registrations) | Related acquisition metric — account signups |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended View Contents: Cross-Platform Product Page Views
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-add-to-carts) | Next funnel stage — shopping intent |
| [Blended Purchases](/reference/metrics/advertising/blended/blended-conversions/blended-purchases) | Final funnel stage — completed orders |
| [Blended Landing Page Views](/reference/metrics/advertising/blended/blended-clicks/blended-landing-page-views) | Similar metric — any landing page visits |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended View Contents Value: Cross-Platform Product View Value
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/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/tiktok-conversions/tiktok-view-contents-value) | Monetary value of products viewed from TikTok ads |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-view-contents) | Count of views — this metric adds the value |
| [Blended Add to Carts Value](/reference/metrics/advertising/blended/blended-conversions/blended-add-to-carts-value) | Next funnel stage — cart value |
| [Blended Purchases Value](/reference/metrics/advertising/blended/blended-conversions/blended-purchases-value) | Final conversion value |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended View-Through Conversions: Ad View Attribution
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-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 ) **WHERE** attribution = view-through
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| [**Blended All Conversions**](/reference/metrics/advertising/blended/blended-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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-conversions/blended-all-conversions) | Total conversions including click and view-through |
| [Blended Purchases](/reference/metrics/advertising/blended/blended-conversions/blended-purchases) | Purchase-specific conversions across platforms |
| [Blended Impressions](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Total ad views that drive VT conversions |
[See all Blended Conversions metrics →](/reference/metrics/advertising/blended/blended-conversions)
# Blended Conversions: Aggregated Conversion Events
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions/index
Track conversion events across all ad platforms. Includes purchases, add to carts, leads, registrations, and app installs with costs and values.
Conversion metrics track user actions attributed to advertising across all connected platforms—from initial interest (view content) through purchase completion.
**Data Source:** Meta Ads, Google Ads, TikTok Ads (aggregated)\
**Metrics:** 41
## Metrics in This Group
### Purchase Conversions
| Metric | Description | When to Use |
| ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | -------------------------- |
| [Blended Purchases](/reference/metrics/advertising/blended/blended-conversions/blended-purchases) | Purchase events across all channels | Count total purchases |
| [Blended Purchases Value](/reference/metrics/advertising/blended/blended-conversions/blended-purchases-value) | Revenue from purchases | Measure purchase revenue |
| [Blended NC Purchases](/reference/metrics/advertising/blended/blended-conversions/blended-new-customer-purchases) | New customer purchases | Track customer acquisition |
| [Blended NC Purchases Value](/reference/metrics/advertising/blended/blended-conversions/blended-new-customer-purchases-value) | New customer revenue | Value of new customers |
### Funnel Conversions
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | ------------------------- |
| [Blended View Contents](/reference/metrics/advertising/blended/blended-conversions/blended-view-contents) | Product page views | Top-of-funnel interest |
| [Blended View Contents Value](/reference/metrics/advertising/blended/blended-conversions/blended-view-contents-value) | Value of viewed products | Product interest value |
| [Blended Cost per View Content](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-view-content) | Cost per product view | Cost for product interest |
| [Blended Add to Carts](/reference/metrics/advertising/blended/blended-conversions/blended-add-to-carts) | Add to cart events | Mid-funnel intent |
| [Blended Add to Carts Value](/reference/metrics/advertising/blended/blended-conversions/blended-add-to-carts-value) | Value of carted items | Cart value |
| [Blended Cost per Add to Cart](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-add-to-cart) | Cost per cart addition | Cost for cart intent |
| [Blended Initiate Checkouts](/reference/metrics/advertising/blended/blended-conversions/blended-initiate-checkouts) | Checkout starts | Purchase intent |
| [Blended Initiate Checkouts Value](/reference/metrics/advertising/blended/blended-conversions/blended-initiate-checkouts-value) | Value at checkout | Checkout value |
| [Blended Cost per Checkout](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-initiate-checkout) | Cost per checkout start | Cost for checkout intent |
### Search and Wishlist
| Metric | Description | When to Use |
| --------------------------------------------------------------------------------------------------------------------------- | --------------------- | ---------------------- |
| [Blended Searches](/reference/metrics/advertising/blended/blended-conversions/blended-searches) | On-site search events | Search engagement |
| [Blended Searches Value](/reference/metrics/advertising/blended/blended-conversions/blended-searches-value) | Value from searches | Search value |
| [Blended Cost per Search](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-search) | Cost per search | Search cost |
| [Blended Add to Wishlists](/reference/metrics/advertising/blended/blended-conversions/blended-add-to-wishlists) | Wishlist additions | Future purchase intent |
| [Blended Add to Wishlists Value](/reference/metrics/advertising/blended/blended-conversions/blended-add-to-wishlists-value) | Wishlist value | Saved items value |
| [Blended Cost per Wishlist](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-add-to-wishlist) | Cost per wishlist add | Wishlist cost |
### Lead and Registration
| Metric | Description | When to Use |
| ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------------- |
| [Blended Leads](/reference/metrics/advertising/blended/blended-conversions/blended-leads) | Lead submissions | Lead generation |
| [Blended Leads Value](/reference/metrics/advertising/blended/blended-conversions/blended-leads-value) | Lead value | Lead worth |
| [Blended Cost per Lead](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-lead) | Cost per lead | CPL metric |
| [Blended Appointments](/reference/metrics/advertising/blended/blended-conversions/blended-appointments) | Appointment bookings | Booking conversions |
| [Blended Appointments Value](/reference/metrics/advertising/blended/blended-conversions/blended-appointments-value) | Appointment value | Booking value |
| [Blended Cost per Appointment](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-appointment) | Cost per booking | Appointment cost |
| [Blended Registrations](/reference/metrics/advertising/blended/blended-conversions/blended-complete-registrations) | Completed registrations | Account signups |
| [Blended Registrations Value](/reference/metrics/advertising/blended/blended-conversions/blended-completed-registrations-value) | Registration value | Signup value |
| [Blended Cost per Registration](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-complete-registration) | Cost per registration | Signup cost |
### Subscription and Trial
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------------------- | --------------------- | ---------------------- |
| [Blended Subscriptions](/reference/metrics/advertising/blended/blended-conversions/blended-subscriptions) | Subscription signups | Recurring revenue |
| [Blended Subscriptions Value](/reference/metrics/advertising/blended/blended-conversions/blended-subscriptions-value) | Subscription value | Recurring value |
| [Blended Cost per Subscription](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-subscription) | Cost per subscription | Subscription CAC |
| [Blended Trial Starts](/reference/metrics/advertising/blended/blended-conversions/blended-trial-starts) | Trial activations | Trial signups |
| [Blended Trial Starts Value](/reference/metrics/advertising/blended/blended-conversions/blended-trial-starts-value) | Trial value | Trial worth |
| [Blended Cost per Trial](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-trial-start) | Cost per trial | Trial acquisition cost |
### App and Application
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------------------------ | ----------------------- | ----------------------- |
| [Blended Applications](/reference/metrics/advertising/blended/blended-conversions/blended-submit-applications) | Application submissions | Application conversions |
| [Blended Applications Value](/reference/metrics/advertising/blended/blended-conversions/blended-submit-applications-value) | Application value | Application worth |
| [Blended Cost per Application](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-submit-application) | Cost per application | Application cost |
| [Blended App Installs](/reference/metrics/advertising/blended/blended-conversions/blended-app-installs) | Mobile app installs | App acquisition |
| [Blended App Installs Value](/reference/metrics/advertising/blended/blended-conversions/blended-app-installs-value) | Install value | App install value |
| [Blended Cost per Install](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-app-install) | Cost per install | CPI metric |
### All Conversions
| Metric | Description | When to Use |
| --------------------------------------------------------------------------------------------------------------------------- | ------------------------ | ---------------------- |
| [Blended Conversions](/reference/metrics/advertising/blended/blended-conversions/blended-conversions) | Total conversions | All conversion events |
| [Blended Conversions Value](/reference/metrics/advertising/blended/blended-conversions/blended-conversions-value) | Total conversion value | All conversion value |
| [Blended Cost per Conversion](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-conversion) | Cost per conversion | Conversion efficiency |
| [Blended All Conversions](/reference/metrics/advertising/blended/blended-conversions/blended-all-conversions) | Including cross-device | Expanded attribution |
| [Blended All Conversions Value](/reference/metrics/advertising/blended/blended-conversions/blended-all-conversions-value) | All conversions value | Full conversion value |
| [Blended Cost per All Conv.](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-all-conversions) | Cost per all conversion | Full attribution cost |
| [Blended View-Through Conv.](/reference/metrics/advertising/blended/blended-conversions/blended-view-through-conversions) | View-through conversions | Impression attribution |
| [Blended Cost per VTC](/reference/metrics/advertising/blended/blended-conversions/blended-cost-per-view-through-conversion) | Cost per view-through | View-through cost |
## How These Metrics Relate
Conversion metrics follow the customer journey:
View Content → Add to Cart → Initiate Checkout → Purchase
Each stage has count, value, and cost metrics.
## Choosing the Right Metric
* **E-commerce**: Focus on Purchase metrics and funnel progression
* **Lead generation**: Track Leads, Appointments, and Registrations
* **SaaS/Apps**: Monitor Subscriptions, Trials, and App Installs
* **Full attribution**: Use All Conversions for cross-device tracking
# Blended All Conversions ROAS: Cross-Platform Return on Ad Spend
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-efficiency/blended-all-conversions-roas
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** ÷ **Blended Spend**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [**Blended All Conversions Value**](/reference/metrics/advertising/blended/blended-conversions/blended-all-conversions-value) | Total revenue from all conversion types across platforms |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend aggregated across all platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Multiplier |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-efficiency/blended-roas) | Click-attributed conversions only (narrower scope) |
| [Blended Conversions ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-conversions-roas) | Similar metric with different conversion window |
| [Blended All Conversions Value](/reference/metrics/advertising/blended/blended-conversions/blended-all-conversions-value) | Numerator in this calculation |
[See all Blended Efficiency metrics →](/reference/metrics/advertising/blended/blended-efficiency)
# Blended Conversions ROAS: Cross-Platform Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-efficiency/blended-conversions-roas
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** ÷ **Blended Spend**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [**Blended All Conversions Value**](/reference/metrics/advertising/blended/blended-conversions/blended-all-conversions-value) | Total revenue from all conversion types across platforms |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total amount spent on advertising across all platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Multiplier |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-efficiency/blended-roas) | Purchase-only ROAS vs all conversions |
| [Blended Spend](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Denominator in this calculation |
| [Blended All Conversions Value](/reference/metrics/advertising/blended/blended-conversions/blended-all-conversions-value) | Numerator in this calculation |
[See all Blended Efficiency metrics →](/reference/metrics/advertising/blended/blended-efficiency)
# Blended CPA: Cost Per Acquisition Across All Channels
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-efficiency/blended-cpa
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** ÷ **Blended Purchases**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total advertising spend across all connected platforms |
| [**Blended Purchases**](/reference/metrics/advertising/blended/blended-conversions/blended-purchases) | Total attributed purchase conversions across all channels |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator — total ad spend across platforms |
| [Blended Purchases](/reference/metrics/advertising/blended/blended-conversions/blended-purchases) | Denominator — total attributed purchases |
| [Blended ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-roas) | Inverse efficiency metric measuring revenue return |
[See all Blended Efficiency metrics →](/reference/metrics/advertising/blended/blended-efficiency)
# Blended New Customer CPA: Cost to Acquire New Customers
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-efficiency/blended-new-customer-cpa
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** ÷ **Blended New Customer Purchases**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Combined ad spend across all connected platforms |
| [**Blended New Customer Purchases**](/reference/metrics/advertising/blended/blended-conversions/blended-new-customer-purchases) | First-time customer orders attributed to ads |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator in NC CPA calculation |
| [Blended New Customer Purchases](/reference/metrics/advertising/blended/blended-conversions/blended-new-customer-purchases) | Denominator in NC CPA calculation |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Overall CPA including repeat customers |
[See all Blended Efficiency metrics →](/reference/metrics/advertising/blended/blended-efficiency)
# Blended New Customer ROAS: First-Time Buyer Ad Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-efficiency/blended-new-customer-roas
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** ÷ **Blended Spend**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| [**Blended New Customer Purchases Value**](/reference/metrics/advertising/blended/blended-conversions/blended-new-customer-purchases-value) | Total revenue from first-time buyers across all ad platforms |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Combined ad spend across Meta, Google, and TikTok |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Multiplier |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-efficiency/blended-roas) | Total return including repeat customers |
| [Blended Spend](/reference/metrics/advertising/blended/blended-spend/blended-spend) | The denominator in this calculation |
| [Blended New Customer Purchases Value](/reference/metrics/advertising/blended/blended-conversions/blended-new-customer-purchases-value) | The numerator in this calculation |
[See all Blended Efficiency metrics →](/reference/metrics/advertising/blended/blended-efficiency)
# Blended ROAS: Return on Ad Spend Across All Channels
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-efficiency/blended-roas
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** ÷ **Blended Spend**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| [**Blended Purchases Value**](/reference/metrics/advertising/blended/blended-conversions/blended-purchases-value) | Total attributed revenue from purchases across all ad platforms |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend across Meta, Google, and TikTok |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Multiplier |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Denominator — total cost of ads |
| [Blended Purchases Value](/reference/metrics/advertising/blended/blended-conversions/blended-purchases-value) | Numerator — total attributed revenue |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Inverse efficiency — cost to acquire a customer |
[See all Blended Efficiency metrics →](/reference/metrics/advertising/blended/blended-efficiency)
# Blended Efficiency: Aggregated ROAS and CPA
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-efficiency/index
Track advertising efficiency metrics across all platforms. Includes Blended ROAS, Blended CPA, and new customer acquisition metrics.
Efficiency metrics measure how effectively your advertising investment converts to revenue or customer acquisition across all connected platforms.
**Data Source:** Meta Ads, Google Ads, TikTok Ads (aggregated)\
**Metrics:** 7
## Metrics in This Group
| Metric | Description | When to Use |
| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | ------------------------ |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Cost per acquisition across all channels | Measure acquisition cost |
| [Blended ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-roas) | Return on ad spend across all channels | Measure revenue return |
| [Blended NC CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-new-customer-cpa) | Cost per new customer acquisition | New customer cost |
| [Blended NC ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-new-customer-roas) | Return on ad spend for new customers | New customer efficiency |
| [Blended Conversions ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-conversions-roas) | ROAS for all conversion events | Conversion efficiency |
| [Blended All Conv. ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-all-conversions-roas) | ROAS including cross-device | Full attribution ROAS |
## How These Metrics Relate
Efficiency metrics are ratios that connect spend to outcomes:
* **CPA** = Total Spend ÷ Purchases (cost to acquire a customer)
* **ROAS** = Purchase Value ÷ Total Spend (revenue per dollar spent)
* **NC CPA** = Spend ÷ New Customer Purchases (cost for new customers)
* **NC ROAS** = NC Purchase Value ÷ Spend (new customer revenue return)
ROAS and CPA are inversely related—high ROAS typically means low CPA.
## Choosing the Right Metric
* **E-commerce profitability**: Focus on ROAS (target typically 3x–5x)
* **Customer acquisition**: Track CPA and NC CPA
* **New customer growth**: Monitor NC ROAS to ensure acquisition is profitable
* **Full funnel view**: Use All Conversions ROAS for complete attribution
## Benchmarks
| Metric | Good | Excellent |
| ------ | ---------- | ---------- |
| ROAS | 3x | 5x+ |
| CPA | \< 1/3 AOV | \< 1/5 AOV |
| NC CPA | \< LTV/3 | \< LTV/5 |
# Blended Comments: Cross-Platform Ad Conversation Volume
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/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 ) 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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-engagement/blended-engagements) | Parent metric including comments, shares, and reactions |
| [Blended Shares](/reference/metrics/advertising/blended/blended-engagement/blended-shares) | Measures share/repost volume across channels |
| [Blended Reactions](/reference/metrics/advertising/blended/blended-engagement/blended-reactions) | Measures likes and reactions across channels |
[See all Blended Engagement metrics →](/reference/metrics/advertising/blended/blended-engagement)
# Blended Cost Per Comment: Ad Engagement Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/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** ÷ **Blended Comments**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------- | ------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend across platforms |
| [**Blended Comments**](/reference/metrics/advertising/blended/blended-engagement/blended-comments) | Total comments across platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator (total spend) |
| [Blended Comments](/reference/metrics/advertising/blended/blended-engagement/blended-comments) | Denominator (total comments) |
| [Blended Cost Per Engagement](/reference/metrics/advertising/blended/blended-engagement/blended-cost-per-engagement) | Broader engagement efficiency |
[See all Blended Engagement metrics →](/reference/metrics/advertising/blended/blended-engagement)
# Blended Cost Per Engagement: Aggregate CPE Across Platforms
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/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** ÷ **Blended Engagements**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend across all platforms |
| [**Blended Engagements**](/reference/metrics/advertising/blended/blended-engagement/blended-engagements) | Total social engagements across platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator in CPE calculation |
| [Blended Engagements](/reference/metrics/advertising/blended/blended-engagement/blended-engagements) | Denominator in CPE calculation |
| [Blended CPM](/reference/metrics/advertising/blended/blended-audience/blended-cpm) | Cost per 1,000 impressions |
[See all Blended Engagement metrics →](/reference/metrics/advertising/blended/blended-engagement)
# Blended Cost Per Like: Engagement Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/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** ÷ **Blended Likes**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------- | ---------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend aggregated across all platforms |
| [**Blended Likes**](/reference/metrics/advertising/blended/blended-engagement/blended-likes) | Total likes on ads across all platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator in this calculation |
| [Blended Likes](/reference/metrics/advertising/blended/blended-engagement/blended-likes) | Denominator in this calculation |
| [Blended Cost Per Engagement](/reference/metrics/advertising/blended/blended-engagement/blended-cost-per-engagement) | Broader engagement efficiency metric |
[See all Blended Engagement metrics →](/reference/metrics/advertising/blended/blended-engagement)
# Blended Cost Per Share: Measure Ad Sharing Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/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** ÷ **Blended Shares**
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total advertising spend aggregated across all platforms |
| [**Blended Shares**](/reference/metrics/advertising/blended/blended-engagement/blended-shares) | Total shares of your ads aggregated across all platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator in this calculation |
| [Blended Shares](/reference/metrics/advertising/blended/blended-engagement/blended-shares) | Denominator in this calculation |
| [Blended Cost Per Engagement](/reference/metrics/advertising/blended/blended-engagement/blended-cost-per-engagement) | Broader engagement efficiency metric |
[See all Blended Engagement metrics →](/reference/metrics/advertising/blended/blended-engagement)
# Blended Engagement Rate: Cross-Platform Ad Resonance
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/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** ÷ **Blended Impressions** ) × 100
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| [**Blended Engagements**](/reference/metrics/advertising/blended/blended-engagement/blended-engagements) | Total interactions (likes, comments, shares, clicks) across platforms |
| [**Blended Impressions**](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Total times ads were shown across platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-engagement/blended-engagements) | The numerator (total interactions) |
| [Blended Impressions](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | The denominator (times shown) |
| [Blended CTR](/reference/metrics/advertising/blended/blended-clicks/blended-ctr) | Click-specific engagement measure |
[See all Blended Engagement metrics →](/reference/metrics/advertising/blended/blended-engagement)
# Blended Engagements: Total Social Ad Interactions
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/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** + **Blended Comments** + **Blended Shares** + **Blended Reactions**
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [**Blended Likes**](/reference/metrics/advertising/blended/blended-engagement/blended-likes) | Total likes on your ads across all channels |
| [**Blended Comments**](/reference/metrics/advertising/blended/blended-engagement/blended-comments) | Total comments on your ads across all channels |
| [**Blended Shares**](/reference/metrics/advertising/blended/blended-engagement/blended-shares) | Total shares of your ads across all channels |
| [**Blended Reactions**](/reference/metrics/advertising/blended/blended-engagement/blended-reactions) | Total reactions (likes, loves, etc.) across all channels |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-engagement/blended-shares) | Subset: content sharing actions |
| [Blended Reactions](/reference/metrics/advertising/blended/blended-engagement/blended-reactions) | Subset: likes, loves, and other reactions |
| [Blended Comments](/reference/metrics/advertising/blended/blended-engagement/blended-comments) | Subset: comment interactions |
[See all Blended Engagement metrics →](/reference/metrics/advertising/blended/blended-engagement)
# Blended Likes: Cross-Platform Ad Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/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 ) 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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-engagement/blended-reactions) | Broader engagement including all reaction types |
| [Blended Engagements](/reference/metrics/advertising/blended/blended-engagement/blended-engagements) | Total interactions including likes, comments, shares |
| [Blended Comments](/reference/metrics/advertising/blended/blended-engagement/blended-comments) | Measures conversation volume vs passive approval |
[See all Blended Engagement metrics →](/reference/metrics/advertising/blended/blended-engagement)
# Blended Reactions: Total Ad Reaction Interactions
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/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 ) 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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-engagement/blended-engagements) | Parent: reactions are a component of total engagements |
| [Blended Likes](/reference/metrics/advertising/blended/blended-engagement/blended-likes) | Subset: like reactions specifically |
| [Blended Shares](/reference/metrics/advertising/blended/blended-engagement/blended-shares) | Sibling: sharing actions on ads |
[See all Blended Engagement metrics →](/reference/metrics/advertising/blended/blended-engagement)
# Blended Saves: Ad Bookmarks Across Platforms
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/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 ) 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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-engagement/blended-engagements) | Total engagement including saves |
| [Blended Likes](/reference/metrics/advertising/blended/blended-engagement/blended-likes) | Another engagement signal |
| [Blended Shares](/reference/metrics/advertising/blended/blended-engagement/blended-shares) | Viral engagement metric |
[See all Blended Engagement metrics →](/reference/metrics/advertising/blended/blended-engagement)
# Blended Shares: Total Ad Shares Across Channels
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/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 ) 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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-engagement/blended-engagements) | Parent: total engagement including shares |
| [Blended Reactions](/reference/metrics/advertising/blended/blended-engagement/blended-reactions) | Sibling: likes and reaction interactions |
| [Blended Comments](/reference/metrics/advertising/blended/blended-engagement/blended-comments) | Sibling: comment interactions |
[See all Blended Engagement metrics →](/reference/metrics/advertising/blended/blended-engagement)
# Blended Engagement: Aggregated Social Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement/index
Track social engagement metrics across all ad platforms. Includes likes, comments, shares, saves, and engagement rates.
Engagement metrics measure social interactions with your ads across all connected platforms—likes, comments, shares, saves, and reactions.
**Data Source:** Meta Ads, Google Ads, TikTok Ads (aggregated)\
**Metrics:** 12
## Metrics in This Group
| Metric | Description | When to Use |
| -------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ------------------------------ |
| [Blended Engagements](/reference/metrics/advertising/blended/blended-engagement/blended-engagements) | Total engagement actions | Measure overall interaction |
| [Blended Cost per Engagement](/reference/metrics/advertising/blended/blended-engagement/blended-cost-per-engagement) | Cost per engagement action | Evaluate engagement efficiency |
| [Blended Engagement Rate](/reference/metrics/advertising/blended/blended-engagement/blended-engagement-rate) | Engagements as % of impressions | Compare content performance |
| [Blended Shares](/reference/metrics/advertising/blended/blended-engagement/blended-shares) | Number of shares | Track viral potential |
| [Blended Cost per Share](/reference/metrics/advertising/blended/blended-engagement/blended-cost-per-share) | Cost per share | Viral reach cost |
| [Blended Reactions](/reference/metrics/advertising/blended/blended-engagement/blended-reactions) | Emoji reactions received | Emotional response |
| [Blended Cost per Reaction](/reference/metrics/advertising/blended/blended-engagement/blended-cost-per-reaction) | Cost per reaction | Reaction efficiency |
| [Blended Likes](/reference/metrics/advertising/blended/blended-engagement/blended-likes) | Number of likes | Basic approval signal |
| [Blended Cost per Like](/reference/metrics/advertising/blended/blended-engagement/blended-cost-per-like) | Cost per like | Like efficiency |
| [Blended Comments](/reference/metrics/advertising/blended/blended-engagement/blended-comments) | Number of comments | Conversation driver |
| [Blended Cost per Comment](/reference/metrics/advertising/blended/blended-engagement/blended-cost-per-comment) | Cost per comment | Comment efficiency |
| [Blended Saves](/reference/metrics/advertising/blended/blended-engagement/blended-saves) | Number of saves | Content bookmarking |
| [Blended Cost per Save](/reference/metrics/advertising/blended/blended-engagement/blended-cost-per-save) | Cost per save | Save efficiency |
## How These Metrics Relate
Engagement metrics capture different levels of user investment:
* **Likes** = lowest friction, quick approval
* **Reactions** = emotional response (loves, wows, etc.)
* **Comments** = active conversation participation
* **Shares** = highest value, extends reach organically
* **Saves** = future reference intent
Total Engagements = Likes + Reactions + Comments + Shares + Saves + Clicks
Engagement Rate = Engagements ÷ Impressions × 100
## Choosing the Right Metric
* **Brand awareness**: Track Engagements and Engagement Rate
* **Viral campaigns**: Focus on Shares
* **Content quality**: Compare Engagement Rate across creatives
* **Community building**: Monitor Comments and Reactions
* **Future intent**: Track Saves for purchase consideration
# Blended Spend: Total Ad Spend Across All Channels
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-spend/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-audience/blended-impressions) | Reach generated by this spend |
| [Blended ROAS](/reference/metrics/advertising/blended/blended-efficiency/blended-roas) | Revenue ÷ Blended Spend |
| [Blended CPA](/reference/metrics/advertising/blended/blended-efficiency/blended-cpa) | Blended Spend ÷ Conversions |
[See all Blended Spend metrics →](/reference/metrics/advertising/blended/blended-spend)
# Blended Spend: Total Advertising Investment
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-spend/index
Track total advertising spend across all connected platforms. Includes Blended Spend with formulas and optimization tips.
Spend metrics track total advertising investment across all connected ad platforms. Use these to understand total budget allocation and calculate blended efficiency metrics.
**Data Source:** Meta Ads, Google Ads, TikTok Ads (aggregated)\
**Metrics:** 1
## Metrics in This Group
| Metric | Description | When to Use |
| -------------------------------------------------------------------------------------- | ----------------------------------------------------- | ------------------------------------ |
| [Blended Ad Spend](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total amount spent on advertising across all channels | Measure total advertising investment |
## How These Metrics Relate
Blended Spend is the foundation for all blended efficiency calculations. It aggregates spend from Meta, Google, TikTok, and any other connected advertising platforms.
## Choosing the Right Metric
* **Total budget tracking**: Use Blended Spend to see total advertising investment
* **Platform comparison**: Compare with [Meta Ad Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) or [Google Ad Spend](/reference/metrics/advertising/google/google-spend/google-spend) for platform breakdowns
# Blended Cost Per ThruPlay: Cross-Platform Video Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/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** ÷ **Blended ThruPlay Views**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total amount spent on advertising across all platforms |
| [**Blended ThruPlay Views**](/reference/metrics/advertising/blended/blended-video/blended-thruplay-views) | Video views watched to completion or for at least 15 seconds |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | The numerator in Cost Per ThruPlay calculation |
| [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-video/blended-thruplay-views) | The denominator in Cost Per ThruPlay calculation |
| [Blended CPV](/reference/metrics/advertising/blended/blended-video/blended-cpv) | Cost per any video view (less strict than ThruPlay) |
[See all Blended Video metrics →](/reference/metrics/advertising/blended/blended-video)
# Blended CPV: Cost Per Video View Across Channels
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/blended-cpv
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** ÷ **Blended Video Views**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------- | -------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total ad spend across all platforms |
| [**Blended Video Views**](/reference/metrics/advertising/blended/blended-video/blended-video-views) | Total video views across all platforms |
| Metadata | |
| --------------- | --------------------------------------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-spend) | Numerator in CPV calculation |
| [Blended Video Views](/reference/metrics/advertising/blended/blended-video/blended-video-views) | Denominator in CPV calculation |
| [Blended CPM](/reference/metrics/advertising/blended/blended-audience/blended-cpm) | Cost efficiency by impressions |
[See all Blended Video metrics →](/reference/metrics/advertising/blended/blended-video)
# Blended ThruPlay Views: Cross-Platform Video Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/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 ) **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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-video-views) | Total video views (any duration) |
| [Blended Video Views (100%)](/reference/metrics/advertising/blended/blended-video/blended-video-views-100) | Videos watched to full completion |
| [Blended Video Views (15s)](/reference/metrics/advertising/blended/blended-video/blended-video-views-15s) | Videos watched for at least 15 seconds |
[See all Blended Video metrics →](/reference/metrics/advertising/blended/blended-video)
# Blended Video Plays: Cross-Platform Video Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-video-views) | Views with completion requirements |
| [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-video/blended-thruplay-views) | Videos watched to 15s or completion |
| [Blended Impressions](/reference/metrics/advertising/blended/blended-audience/blended-impressions) | Total ad impressions for play rate calculation |
[See all Blended Video metrics →](/reference/metrics/advertising/blended/blended-video)
# Blended Video Views: Total Video Ad Views Across Platforms
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/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 ) 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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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-video/blended-cpv) | Spend ÷ Video Views |
| [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-video/blended-thruplay-views) | Views where video was watched to completion |
| [Blended Video Views (25%)](/reference/metrics/advertising/blended/blended-video/blended-video-views-25) | Views reaching 25% completion |
[See all Blended Video metrics →](/reference/metrics/advertising/blended/blended-video)
# Blended Video Views at 100%: Complete Video Plays
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/blended-video-views-100
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 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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-video-views-75) | Viewers who watched at least 75% |
| [Blended Video Views](/reference/metrics/advertising/blended/blended-video/blended-video-views) | All video plays regardless of duration |
| [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-video/blended-thruplay-views) | 15s or complete view metric |
[See all Blended Video metrics →](/reference/metrics/advertising/blended/blended-video)
# Blended Video Views 15s: Cross-Platform Video Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/blended-video-views-15s
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 ≥ 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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-video-views) | Total views (this metric filters for 15s+) |
| [Blended Video Views (30s)](/reference/metrics/advertising/blended/blended-video/blended-video-views-30s) | Views with 30+ seconds watched |
| [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-video/blended-thruplay-views) | Completed/15s threshold metric |
[See all Blended Video metrics →](/reference/metrics/advertising/blended/blended-video)
# Blended Video Views at 25%: Partial Watch Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/blended-video-views-25
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 ) **WHERE** watch\_progress ≥ 25%
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| [**Blended Video Views**](/reference/metrics/advertising/blended/blended-video/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-video-views) | Total views before filtering by watch progress |
| [Blended Video Views (50%)](/reference/metrics/advertising/blended/blended-video/blended-video-views-50) | Next milestone in viewer engagement |
| [Blended Video Views (75%)](/reference/metrics/advertising/blended/blended-video/blended-video-views-75) | Near-complete video watches |
[See all Blended Video metrics →](/reference/metrics/advertising/blended/blended-video)
# Blended Video Views at 30 Seconds: Cross-Platform Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/blended-video-views-30s
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 ) **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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-video-views-15s) | Shorter engagement threshold (15 seconds) |
| [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-video/blended-thruplay-views) | Completed or 15s+ views |
| [Blended Video Views (50%)](/reference/metrics/advertising/blended/blended-video/blended-video-views-50) | Views reaching 50% of video duration |
[See all Blended Video metrics →](/reference/metrics/advertising/blended/blended-video)
# Blended Video Views at 50%: Measure Video Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/blended-video-views-50
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 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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-video-views-25) | Earlier engagement threshold |
| [Blended Video Views (75%)](/reference/metrics/advertising/blended/blended-video/blended-video-views-75) | Later engagement threshold |
| [Blended Video Views (100%)](/reference/metrics/advertising/blended/blended-video/blended-video-views-100) | Full video completions |
[See all Blended Video metrics →](/reference/metrics/advertising/blended/blended-video)
# Blended Video Views at 75%: Cross-Platform Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/blended-video-views-75
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 ) 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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/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/blended-video-views-50) | Lower engagement threshold—viewers watched half |
| [Blended Video Views (100%)](/reference/metrics/advertising/blended/blended-video/blended-video-views-100) | Highest engagement—video watched to completion |
| [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-video/blended-thruplay-views) | 15-second or completion views |
[See all Blended Video metrics →](/reference/metrics/advertising/blended/blended-video)
# Blended Video: Aggregated Video Performance
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video/index
Track video ad performance across all platforms. Includes Blended Video Views, completion rates, ThruPlay, and cost metrics.
Video metrics measure how users engage with video ads across all connected platforms—views, completion rates, and view costs.
**Data Source:** Meta Ads, Google Ads, TikTok Ads (aggregated)\
**Metrics:** 19
## Metrics in This Group
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------- | ----------------------------- |
| [Blended Video Views](/reference/metrics/advertising/blended/blended-video/blended-video-views) | Number of video views across all channels | Measure total video reach |
| [Blended CPV](/reference/metrics/advertising/blended/blended-video/blended-cpv) | Cost per video view | Evaluate view cost efficiency |
| [Blended 15s Video Views](/reference/metrics/advertising/blended/blended-video/blended-15-second-video-views) | Views reaching 15 seconds | Measure short-form engagement |
| [Blended Cost per 15s View](/reference/metrics/advertising/blended/blended-video/blended-cost-per-15-second-video-view) | Cost per 15-second view | Cost for short attention |
| [Blended 30s Video Views](/reference/metrics/advertising/blended/blended-video/blended-30-second-video-views) | Views reaching 30 seconds | Measure mid-length engagement |
| [Blended Cost per 30s View](/reference/metrics/advertising/blended/blended-video/blended-cost-per-30-second-video-view) | Cost per 30-second view | Cost for longer attention |
| [Blended 25% Video Views](/reference/metrics/advertising/blended/blended-video/blended-25-percent-video-views) | Views reaching 25% completion | Early retention metric |
| [Blended 50% Video Views](/reference/metrics/advertising/blended/blended-video/blended-50-percent-video-views) | Views reaching 50% completion | Midpoint retention |
| [Blended 75% Video Views](/reference/metrics/advertising/blended/blended-video/blended-75-percent-video-views) | Views reaching 75% completion | Strong retention signal |
| [Blended 95% Video Views](/reference/metrics/advertising/blended/blended-video/blended-95-percent-video-views) | Views reaching 95% completion | Near-complete views |
| [Blended 100% Video Views](/reference/metrics/advertising/blended/blended-video/blended-100-percent-video-views) | Views watching to completion | Full completion count |
| [Blended 25% Completion Rate](/reference/metrics/advertising/blended/blended-video/blended-25-percent-video-completion-rate) | Percentage reaching 25% | Early drop-off rate |
| [Blended 50% Completion Rate](/reference/metrics/advertising/blended/blended-video/blended-50-percent-video-completion-rate) | Percentage reaching 50% | Midpoint retention rate |
| [Blended 75% Completion Rate](/reference/metrics/advertising/blended/blended-video/blended-75-percent-video-completion-rate) | Percentage reaching 75% | Strong engagement rate |
| [Blended 100% Completion Rate](/reference/metrics/advertising/blended/blended-video/blended-100-percent-video-completion-rate) | Percentage completing video | Full completion rate |
| [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-video/blended-video-thruplay-views) | ThruPlay views (15s or complete) | Quality view count |
| [Blended Cost per ThruPlay](/reference/metrics/advertising/blended/blended-video/blended-cost-per-video-thruplay) | Cost per ThruPlay | Cost for quality views |
| [Blended Video Plays](/reference/metrics/advertising/blended/blended-video/blended-video-plays) | Video play initiations | Total play starts |
| [Blended Cost per Play](/reference/metrics/advertising/blended/blended-video/blended-cost-per-video-play) | Cost per video play | Cost per play initiation |
## How These Metrics Relate
Video metrics measure progressive engagement:
* **Video Plays** = initial play starts (includes autoplay)
* **Video Views** = meaningful view threshold met
* **25% → 100% Views** = progressive completion milestones
* **ThruPlay** = watched 15+ seconds or to completion
Completion rates = X% Views ÷ Video Views × 100
## Choosing the Right Metric
* **Brand awareness**: Track Video Views and ThruPlay for reach
* **Content quality**: Compare completion rates to identify engaging content
* **Cost efficiency**: Use CPV and Cost per ThruPlay for video campaign optimization
* **Funnel analysis**: Track drop-off at each quartile to identify where viewers lose interest
# Blended Advertising Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/index
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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/tiktok)\
**Categories:** 5
## Metric Categories
**1 metric** — Total advertising spend across all platforms.
**5 metrics** — Cross-platform reach, impressions, frequency, and audience costs.
**15 metrics** — Click metrics, CTR, and cost-per-click across all platforms.
**6 metrics** — Cross-platform ROAS, CPA, and return metrics.
**Multiple metrics** — Aggregated conversion events and values.
## 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.
# Google CPM: Cost Per Thousand Impressions
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-audience/google-cpm
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/google-spend/google-spend) ÷ [**Google Impressions**](/reference/metrics/advertising/google/google-audience/google-impressions) ) × 1,000
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| [**Google Spend**](/reference/metrics/advertising/google/google-spend/google-spend) | Total amount spent on Google advertising |
| [**Google Impressions**](/reference/metrics/advertising/google/google-audience/google-impressions) | Total times your Google ads were displayed |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Google Ads](/sources/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/google-spend/google-spend) | Numerator—total ad cost |
| [Google Impressions](/reference/metrics/advertising/google/google-audience/google-impressions) | Denominator—total ad views |
[See all Google Audience metrics →](/reference/metrics/advertising/google/google-audience)
# Google Frequency: Average Ad Views Per Person
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-audience/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/google-audience/google-impressions) ÷ **Reach**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| [**Google Impressions**](/reference/metrics/advertising/google/google-audience/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/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/google-audience/google-impressions) | Numerator in the frequency calculation |
[See all Google Audience metrics →](/reference/metrics/advertising/google/google-audience)
# Google Impressions: Ad Visibility Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-audience/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/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/google-audience/google-cpm) | Cost per 1,000 impressions |
| [Google CTR](/reference/metrics/advertising/google/google-clicks/google-ctr) | Clicks ÷ Impressions (click-through rate) |
| [Google Frequency](/reference/metrics/advertising/google/google-audience/google-frequency) | Impressions ÷ Reach (average views per user) |
| [Google Clicks](/reference/metrics/advertising/google/google-clicks/google-clicks) | User engagement from these impressions |
[See all Google Audience metrics →](/reference/metrics/advertising/google/google-audience)
# Google Audience: Reach and Impression Metrics for Google Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-audience/index
Track Google Ads audience metrics in Upstack. Includes Google Impressions, Google CPM, and Google Frequency with formulas and optimization tips.
Audience metrics measure the reach and exposure of your Google ads—how many times your ads were shown and how efficiently you're reaching your target audience. Use these to evaluate campaign scale and impression efficiency.
**Data Source:** [Google Ads](/sources/google-ads)\
**Metrics:** 3
## Metrics in This Group
| Metric | Description | When to Use |
| ---------------------------------------------------------------------------------------------- | ------------------------------ | ------------------------- |
| [Google Impressions](/reference/metrics/advertising/google/google-audience/google-impressions) | Number of times ads were shown | Measure campaign reach |
| [Google CPM](/reference/metrics/advertising/google/google-audience/google-cpm) | Cost per thousand impressions | Evaluate reach efficiency |
| [Google Frequency](/reference/metrics/advertising/google/google-audience/google-frequency) | Average views per person | Monitor ad fatigue risk |
## How These Metrics Relate
These metrics form a hierarchy of audience measurement:
* **Google Impressions** counts total ad views across all users
* **Google CPM** = Google Spend ÷ Google Impressions × 1,000 (cost to reach 1,000 people)
* **Google Frequency** = Google Impressions ÷ Reach (how often each person sees your ad)
## Choosing the Right Metric
* **Brand awareness campaigns**: Use Impressions and CPM to maximize reach within budget
* **Ad fatigue monitoring**: Track Frequency to avoid overexposing your audience (typically keep below 3-5x)
* **Efficiency benchmarking**: Compare CPM across campaigns to find cost-effective audience targeting
# Google Clicks: Total Ad Click Volume
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-clicks/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/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/google-clicks/google-ctr) | Click-through rate shows clicks as a percentage of impressions |
| [Google CPC](/reference/metrics/advertising/google/google-clicks/google-cpc) | Cost per click divides spend by total clicks |
[See all Google Clicks metrics →](/reference/metrics/advertising/google/google-clicks)
# Google CPC: Cost Per Click on Your Google Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-clicks/google-cpc
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/google-spend/google-spend) ÷ [**Google Clicks**](/reference/metrics/advertising/google/google-clicks/google-clicks)
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------- | ---------------------------------------- |
| [**Google Spend**](/reference/metrics/advertising/google/google-spend/google-spend) | Total amount spent on Google advertising |
| [**Google Clicks**](/reference/metrics/advertising/google/google-clicks/google-clicks) | Total clicks on your Google ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Google Ads](/sources/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/google-spend/google-spend) | Numerator in CPC formula |
| [Google Clicks](/reference/metrics/advertising/google/google-clicks/google-clicks) | Denominator in CPC formula |
[See all Google Clicks metrics →](/reference/metrics/advertising/google/google-clicks)
# Google CTR: Click-Through Rate for Google Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-clicks/google-ctr
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/google-clicks/google-clicks) ÷ [**Google Impressions**](/reference/metrics/advertising/google/google-audience/google-impressions) ) × 100
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| [**Google Clicks**](/reference/metrics/advertising/google/google-clicks/google-clicks) | Total number of clicks on your Google ads |
| [**Google Impressions**](/reference/metrics/advertising/google/google-audience/google-impressions) | Total number of times your Google ads were displayed |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Google Ads](/sources/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/google-clicks/google-clicks) | Numerator in CTR calculation |
| [Google Impressions](/reference/metrics/advertising/google/google-audience/google-impressions) | Denominator in CTR calculation |
[See all Google Clicks metrics →](/reference/metrics/advertising/google/google-clicks)
# Google Clicks: Click Engagement Metrics for Google Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-clicks/index
Track Google Ads click metrics in Upstack. Includes Google Clicks, Google CPC, and Google CTR with formulas, examples, and optimization tips.
Click metrics measure user engagement with your Google ads—from total clicks to click-through rates. Use these to evaluate ad relevance, creative performance, and traffic generation efficiency.
**Data Source:** [Google Ads](/sources/google-ads)\
**Metrics:** 3
## Metrics in This Group
| Metric | Description | When to Use |
| ---------------------------------------------------------------------------------- | ------------------- | ---------------------------- |
| [Google Clicks](/reference/metrics/advertising/google/google-clicks/google-clicks) | Total clicks on ads | Measure traffic generation |
| [Google CPC](/reference/metrics/advertising/google/google-clicks/google-cpc) | Cost per click | Evaluate click efficiency |
| [Google CTR](/reference/metrics/advertising/google/google-clicks/google-ctr) | Click-through rate | Compare creative performance |
## How These Metrics Relate
Click metrics connect impressions to traffic:
* **Google Clicks** counts total user clicks on your ads
* **Google CPC** = Google Spend ÷ Google Clicks (cost efficiency per click)
* **Google CTR** = Google Clicks ÷ Google Impressions × 100 (engagement rate)
## Choosing the Right Metric
* **Traffic campaigns**: Use Clicks to measure absolute volume of site visitors from ads
* **Cost efficiency**: Compare CPC across campaigns to find cost-effective traffic sources
* **Creative testing**: Use CTR to compare ad copy, images, and headlines—higher CTR signals stronger relevance
* **Quality Score impact**: Google uses CTR as a signal for ad relevance, affecting your ad position and costs
# Google All Conversions: Total Conversion Actions
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-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/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/google-conversions/google-purchases) | Subset focusing only on purchase conversions |
| [Google All Conversions Value](/reference/metrics/advertising/google/google-conversions/google-all-conversions-value) | Monetary value of all conversions |
[See all Google Conversions metrics →](/reference/metrics/advertising/google/google-conversions)
# Google All Conversions Value: Total Revenue from All Google Conversion Types
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-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/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/google-conversions/google-all-conversions) | Count of all conversions (volume behind this value) |
| [Google All Conversions ROAS](/reference/metrics/advertising/google/google-efficiency/google-all-conversions-roas) | Return on ad spend using this value metric |
[See all Google Conversions metrics →](/reference/metrics/advertising/google/google-conversions)
# Google Average All Conversion Value: Value Per Conversion
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-conversions/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/google-conversions/google-all-conversions-value) ÷ [**Google All Conversions**](/reference/metrics/advertising/google/google-conversions/google-all-conversions)
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [**Google All Conversions Value**](/reference/metrics/advertising/google/google-conversions/google-all-conversions-value) | Total monetary value from all conversion actions |
| [**Google All Conversions**](/reference/metrics/advertising/google/google-conversions/google-all-conversions) | Total count of all conversion actions |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Google Ads](/sources/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/google-conversions/google-all-conversions) | Denominator in this calculation |
| [Google All Conversions Value](/reference/metrics/advertising/google/google-conversions/google-all-conversions-value) | Numerator in this calculation |
[See all Google Conversions metrics →](/reference/metrics/advertising/google/google-conversions)
# Google Average Purchase Value: Revenue Per Conversion
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-conversions/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/google-conversions/google-purchases-value) ÷ [**Google Purchases**](/reference/metrics/advertising/google/google-conversions/google-purchases)
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [**Google Purchases Value**](/reference/metrics/advertising/google/google-conversions/google-purchases-value) | Total revenue from purchases attributed to Google ads |
| [**Google Purchases**](/reference/metrics/advertising/google/google-conversions/google-purchases) | Number of purchases attributed to Google ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Google Ads](/sources/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/google-conversions/google-purchases-value) | Numerator: total revenue attributed to Google |
| [Google Purchases](/reference/metrics/advertising/google/google-conversions/google-purchases) | Denominator: purchase count |
[See all Google Conversions metrics →](/reference/metrics/advertising/google/google-conversions)
# Google Purchases: Ad-Attributed Purchase Count
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-conversions/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/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/google-conversions/google-purchases-value) | Revenue generated from these purchases |
| [Google ROAS](/reference/metrics/advertising/google/google-efficiency/google-roas) | Return on ad spend using purchases value |
| [Google CPA](/reference/metrics/advertising/google/google-efficiency/google-cpa) | Cost per purchase acquisition |
[See all Google Conversions metrics →](/reference/metrics/advertising/google/google-conversions)
# Google Purchases Value: Google-Attributed Revenue
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-conversions/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/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/google-conversions/google-purchases) | Count of purchase conversions driving this revenue |
| [Google ROAS](/reference/metrics/advertising/google/google-efficiency/google-roas) | Efficiency ratio using this as numerator |
[See all Google Conversions metrics →](/reference/metrics/advertising/google/google-conversions)
# Google Video Views: Track Video Ad Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-conversions/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/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/google-efficiency/google-cpv) | Cost efficiency per video view |
[See all Google Conversions metrics →](/reference/metrics/advertising/google/google-conversions)
# Google View-Through Conversions: Measure Impression Impact
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-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/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/google-conversions/google-purchases) | Click-based conversions to compare against |
| [Google Cost per View-Through Conversion](/reference/metrics/advertising/google/google-efficiency/google-cost-per-view-through-conversion) | Efficiency of impression-driven conversions |
[See all Google Conversions metrics →](/reference/metrics/advertising/google/google-conversions)
# Google Conversions: Purchase and Conversion Metrics for Google Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-conversions/index
Track Google Ads conversion metrics in Upstack. Includes Google Purchases, All Conversions, Video Views, and View-Through Conversions with formulas and examples.
Conversion metrics measure the outcomes of your Google advertising—purchases, conversion events, and video engagement. These metrics are reported directly by Google based on their attribution model.
**Data Source:** [Google Ads](/sources/google-ads)\
**Metrics:** 8
## Metrics in This Group
| Metric | Description | When to Use |
| ----------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | ----------------------------------- |
| [Google Purchases](/reference/metrics/advertising/google/google-conversions/google-purchases) | Purchases attributed by Google | Count purchase conversions |
| [Google Purchases Value](/reference/metrics/advertising/google/google-conversions/google-purchases-value) | Revenue from Google-attributed purchases | Measure revenue impact |
| [Google Average Purchase Value](/reference/metrics/advertising/google/google-conversions/google-average-purchase-value) | Average order value per purchase | Evaluate conversion quality |
| [Google All Conversions](/reference/metrics/advertising/google/google-conversions/google-all-conversions) | All tracked conversion actions | Count all goal completions |
| [Google All Conversions Value](/reference/metrics/advertising/google/google-conversions/google-all-conversions-value) | Total value of all conversions | Measure total conversion value |
| [Google Average All Conversion Value](/reference/metrics/advertising/google/google-conversions/google-average-all-conversion-value) | Average value per conversion | Evaluate overall conversion quality |
| [Google Video Views](/reference/metrics/advertising/google/google-conversions/google-video-views) | Video ad views (30+ seconds) | Measure video engagement |
| [Google View-Through Conversions](/reference/metrics/advertising/google/google-conversions/google-view-through-conversions) | Conversions after ad view (no click) | Measure impression-driven impact |
## How These Metrics Relate
Google reports two levels of conversions:
**Purchase-specific:**
* **Google Purchases** = Count of purchase conversion events
* **Google Purchases Value** = Total revenue from those purchases
* **Google Average Purchase Value** = Purchases Value ÷ Purchases
**All conversion types:**
* **Google All Conversions** = Purchases + sign-ups + other tracked goals
* **Google All Conversions Value** = Total value across all conversion types
* **Google Average All Conversion Value** = All Conversions Value ÷ All Conversions
**Engagement metrics:**
* **Google Video Views** = Users who watched 30+ seconds (or full video if shorter)
* **Google View-Through Conversions** = Users who saw ad but didn't click, then later converted
## Choosing the Right Metric
* **E-commerce ROAS**: Use Purchases and Purchases Value for direct revenue attribution
* **Lead generation**: Use All Conversions to track form submissions and sign-ups
* **Brand campaigns**: Use Video Views to measure engagement, View-Through Conversions for awareness impact
* **Full-funnel analysis**: Compare click-through vs view-through conversions to understand the customer journey
# Google All Conversions ROAS: Full-Funnel Return on Ad Spend
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-efficiency/google-all-conversions-roas
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/google-conversions/google-all-conversions-value) ÷ [**Google Spend**](/reference/metrics/advertising/google/google-spend/google-spend)
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| [**Google All Conversions Value**](/reference/metrics/advertising/google/google-conversions/google-all-conversions-value) | Total value from all conversion types tracked in Google Ads |
| [**Google Spend**](/reference/metrics/advertising/google/google-spend/google-spend) | Total amount billed by Google for advertising |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Ratio |
| **Data Source** | [Google Ads](/sources/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/google-efficiency/google-roas) | Purchase-only ROAS; use for direct sales comparison |
| [Google All Conversions Value](/reference/metrics/advertising/google/google-conversions/google-all-conversions-value) | Numerator of this formula |
[See all Google Efficiency metrics →](/reference/metrics/advertising/google/google-efficiency)
# Google Cost per All Conversions: Efficiency Across All Goal Types
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-efficiency/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/google-spend/google-spend) ÷ [**Google All Conversions**](/reference/metrics/advertising/google/google-conversions/google-all-conversions)
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| [**Google Spend**](/reference/metrics/advertising/google/google-spend/google-spend) | Total amount spent on Google Ads campaigns |
| [**Google All Conversions**](/reference/metrics/advertising/google/google-conversions/google-all-conversions) | Total count of all conversion actions tracked by Google Ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Google Ads](/sources/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/google-spend/google-spend) | Numerator in this formula |
| [Google All Conversions](/reference/metrics/advertising/google/google-conversions/google-all-conversions) | Denominator in this formula |
[See all Google Efficiency metrics →](/reference/metrics/advertising/google/google-efficiency)
# Google Cost per Purchase: Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-efficiency/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/google-spend/google-spend) ÷ [**Google Purchases**](/reference/metrics/advertising/google/google-conversions/google-purchases)
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------- | --------------------------------------------- |
| [**Google Spend**](/reference/metrics/advertising/google/google-spend/google-spend) | Total amount billed by Google for advertising |
| [**Google Purchases**](/reference/metrics/advertising/google/google-conversions/google-purchases) | Number of purchases attributed to Google ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Google Ads](/sources/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/google-spend/google-spend) | Numerator in calculation |
| [Google Purchases](/reference/metrics/advertising/google/google-conversions/google-purchases) | Denominator in calculation |
| [Google ROAS](/reference/metrics/advertising/google/google-efficiency/google-roas) | Revenue-based efficiency metric |
[See all Google Efficiency metrics →](/reference/metrics/advertising/google/google-efficiency)
# Google Cost per View-Through Conversion: VTC Efficiency Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-efficiency/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/google-spend/google-spend) ÷ [**Google View-Through Conversions**](/reference/metrics/advertising/google/google-conversions/google-view-through-conversions)
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [**Google Spend**](/reference/metrics/advertising/google/google-spend/google-spend) | Total amount spent on Google advertising |
| [**Google View-Through Conversions**](/reference/metrics/advertising/google/google-conversions/google-view-through-conversions) | Conversions attributed to ad impressions without a click |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Google Ads](/sources/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/google-conversions/google-view-through-conversions) | The denominator—total impression-attributed conversions |
| [Google Spend](/reference/metrics/advertising/google/google-spend/google-spend) | The numerator—total ad spend driving these conversions |
[See all Google Efficiency metrics →](/reference/metrics/advertising/google/google-efficiency)
# Google CPA: Average Cost to Acquire a Purchase
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-efficiency/google-cpa
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/google-spend/google-spend) ÷ [**Google Purchases**](/reference/metrics/advertising/google/google-conversions/google-purchases)
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------- | -------------------------------------------- |
| [**Google Spend**](/reference/metrics/advertising/google/google-spend/google-spend) | Total amount spent on Google advertising |
| [**Google Purchases**](/reference/metrics/advertising/google/google-conversions/google-purchases) | Number of purchases attributed to Google Ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Google Ads](/sources/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/google-efficiency/google-cost-per-purchase) | Same calculation—CPA is a common abbreviation |
| [Google ROAS](/reference/metrics/advertising/google/google-efficiency/google-roas) | Efficiency from the revenue perspective |
| [Google Spend](/reference/metrics/advertising/google/google-spend/google-spend) | Numerator in the CPA formula |
| [Google Purchases](/reference/metrics/advertising/google/google-conversions/google-purchases) | Denominator in the CPA formula |
[See all Google Efficiency metrics →](/reference/metrics/advertising/google/google-efficiency)
# Google CPV: Video Ad Cost Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-efficiency/google-cpv
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/google-spend/google-spend) ÷ [**Google Video Views**](/reference/metrics/advertising/google/google-conversions/google-video-views)
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| [**Google Spend**](/reference/metrics/advertising/google/google-spend/google-spend) | Total amount spent on Google advertising |
| [**Google Video Views**](/reference/metrics/advertising/google/google-conversions/google-video-views) | Number of times users watched your Google video ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Google Ads](/sources/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/google-conversions/google-video-views) | The denominator—total views driving your CPV |
| [Google Spend](/reference/metrics/advertising/google/google-spend/google-spend) | The numerator—total cost divided by views |
[See all Google Efficiency metrics →](/reference/metrics/advertising/google/google-efficiency)
# Google ROAS: Measure Your Google Ads Return on Investment
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-efficiency/google-roas
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/google-conversions/google-purchases-value) ÷ [**Google Spend**](/reference/metrics/advertising/google/google-spend/google-spend)
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| [**Google Purchases Value**](/reference/metrics/advertising/google/google-conversions/google-purchases-value) | Revenue from purchases attributed to Google Ads |
| [**Google Spend**](/reference/metrics/advertising/google/google-spend/google-spend) | Total amount spent on Google Ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Multiplier (displayed as Nx) |
| **Data Source** | [Google Ads](/sources/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/google-spend/google-spend) | The denominator in the ROAS calculation |
| [Google Purchases Value](/reference/metrics/advertising/google/google-conversions/google-purchases-value) | The numerator in the ROAS calculation |
| [Google CPA](/reference/metrics/advertising/google/google-efficiency/google-cpa) | Cost efficiency metric—lower CPA often correlates with higher ROAS |
[See all Google Efficiency metrics →](/reference/metrics/advertising/google/google-efficiency)
# Google Efficiency: ROAS and Cost Efficiency Metrics for Google Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-efficiency/index
Track Google Ads efficiency metrics in Upstack. Includes Google ROAS, Google CPA, and cost per conversion metrics with formulas and optimization tips.
Efficiency metrics measure the return on your Google ad spend—how much revenue you generate per dollar spent and how efficiently you're acquiring conversions. Use these to optimize campaign performance and budget allocation.
**Data Source:** [Google Ads](/sources/google-ads)\
**Metrics:** 7
## Metrics in This Group
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | ----------------------------- |
| [Google ROAS](/reference/metrics/advertising/google/google-efficiency/google-roas) | Return on ad spend | Measure revenue efficiency |
| [Google CPA](/reference/metrics/advertising/google/google-efficiency/google-cpa) | Cost per purchase acquisition | Evaluate acquisition cost |
| [Google Cost per Purchase](/reference/metrics/advertising/google/google-efficiency/google-cost-per-purchase) | Cost to acquire one purchase | Same as CPA, explicit naming |
| [Google All Conversions ROAS](/reference/metrics/advertising/google/google-efficiency/google-all-conversions-roas) | ROAS across all conversion types | Measure full conversion value |
| [Google Cost per All Conversions](/reference/metrics/advertising/google/google-efficiency/google-cost-per-all-conversions) | Cost per any conversion | Evaluate cost per goal |
| [Google CPV](/reference/metrics/advertising/google/google-efficiency/google-cpv) | Cost per video view | Measure video ad efficiency |
| [Google Cost per View-Through Conversion](/reference/metrics/advertising/google/google-efficiency/google-cost-per-view-through-conversion) | Cost per view-through conversion | Measure impression ROI |
## How These Metrics Relate
Efficiency metrics are ratios of spend to outcomes:
**Purchase-focused:**
* **Google ROAS** = Purchases Value ÷ Spend (revenue return)
* **Google CPA** = Spend ÷ Purchases (cost to acquire)
* **Google Cost per Purchase** = Same formula as CPA
**All conversions:**
* **Google All Conversions ROAS** = All Conversions Value ÷ Spend
* **Google Cost per All Conversions** = Spend ÷ All Conversions
**Specialized:**
* **Google CPV** = Spend ÷ Video Views
* **Google Cost per View-Through Conversion** = Spend ÷ View-Through Conversions
## Choosing the Right Metric
* **E-commerce profitability**: Use ROAS (target 3x+ for healthy margins)
* **Acquisition budgeting**: Use CPA to set maximum bids based on customer LTV
* **Lead generation**: Use Cost per All Conversions for non-purchase goals
* **Video campaigns**: Use CPV to compare video ad efficiency
* **Brand impact**: Use Cost per View-Through Conversion to value impression-only touchpoints
# Google Spend: Total Ad Investment
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-spend/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/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/google-efficiency/google-roas) | Revenue divided by spend |
| [Google CPA](/reference/metrics/advertising/google/google-efficiency/google-cpa) | Spend divided by purchases |
| [Google CPC](/reference/metrics/advertising/google/google-clicks/google-cpc) | Spend divided by clicks |
[See all Google Spend metrics →](/reference/metrics/advertising/google/google-spend)
# Google Spend: Ad Spend Metrics for Google Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/google-spend/index
Track Google Ads spending metrics in Upstack. Monitor your Google advertising budget allocation and total ad spend with real-time data from the Google Ads API.
Spend metrics track your Google Ads investment—how much you're spending on campaigns and where your advertising budget is allocated. Use these to monitor costs and compare spending across campaigns.
**Data Source:** [Google Ads](/sources/google-ads)\
**Metrics:** 1
## Metrics in This Group
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------- | -------------------------------- | ---------------------------- |
| [Google Spend](/reference/metrics/advertising/google/google-spend/google-spend) | Total amount spent on Google ads | Track advertising investment |
## How These Metrics Relate
Google Spend is the foundation for all efficiency calculations:
* **Google CPC** = Google Spend ÷ Google Clicks
* **Google CPA** = Google Spend ÷ Google Purchases
* **Google ROAS** = Google Purchases Value ÷ Google Spend
* **Google CPM** = Google Spend ÷ Google Impressions × 1,000
## Choosing the Right Metric
* **Budget tracking**: Use Google Spend to monitor daily, weekly, or monthly ad investment
* **Efficiency analysis**: Combine with conversion metrics to calculate ROAS and CPA
* **Cross-channel comparison**: Compare Google Spend against Meta Spend or TikTok Spend for budget allocation decisions
# Google Ads Metrics: Performance Tracking for Search, Display & YouTube
Source: https://docs.upstackdata.com/reference/metrics/advertising/google/index
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/google-ads)\
**Metrics:** 22\
**Subcategories:** 5
## Metric Groups
### [Google Spend](/reference/metrics/advertising/google/google-spend)
Track your Google advertising investment and budget allocation.
| Metric | Description |
| ------------------------------------------------------------------------------- | -------------------------------- |
| [Google Spend](/reference/metrics/advertising/google/google-spend/google-spend) | Total amount spent on Google ads |
### [Google Audience](/reference/metrics/advertising/google/google-audience)
Measure reach and impression efficiency across your campaigns.
| Metric | Description |
| ---------------------------------------------------------------------------------------------- | ------------------------------ |
| [Google Impressions](/reference/metrics/advertising/google/google-audience/google-impressions) | Number of times ads were shown |
| [Google CPM](/reference/metrics/advertising/google/google-audience/google-cpm) | Cost per thousand impressions |
| [Google Frequency](/reference/metrics/advertising/google/google-audience/google-frequency) | Average views per person |
### [Google Clicks](/reference/metrics/advertising/google/google-clicks)
Evaluate click engagement and traffic generation from your ads.
| Metric | Description |
| ---------------------------------------------------------------------------------- | ------------------- |
| [Google Clicks](/reference/metrics/advertising/google/google-clicks/google-clicks) | Total clicks on ads |
| [Google CPC](/reference/metrics/advertising/google/google-clicks/google-cpc) | Cost per click |
| [Google CTR](/reference/metrics/advertising/google/google-clicks/google-ctr) | Click-through rate |
### [Google Conversions](/reference/metrics/advertising/google/google-conversions)
Track purchases, conversions, and video engagement attributed by Google.
| Metric | Description |
| ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| [Google Purchases](/reference/metrics/advertising/google/google-conversions/google-purchases) | Purchases attributed by Google |
| [Google Purchases Value](/reference/metrics/advertising/google/google-conversions/google-purchases-value) | Revenue from attributed purchases |
| [Google Average Purchase Value](/reference/metrics/advertising/google/google-conversions/google-average-purchase-value) | Average order value |
| [Google All Conversions](/reference/metrics/advertising/google/google-conversions/google-all-conversions) | All tracked conversion actions |
| [Google All Conversions Value](/reference/metrics/advertising/google/google-conversions/google-all-conversions-value) | Total value of all conversions |
| [Google Average All Conversion Value](/reference/metrics/advertising/google/google-conversions/google-average-all-conversion-value) | Average value per conversion |
| [Google Video Views](/reference/metrics/advertising/google/google-conversions/google-video-views) | Video ad views (30+ seconds) |
| [Google View-Through Conversions](/reference/metrics/advertising/google/google-conversions/google-view-through-conversions) | Conversions after ad view (no click) |
### [Google Efficiency](/reference/metrics/advertising/google/google-efficiency)
Measure return on ad spend and acquisition efficiency.
| Metric | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- |
| [Google ROAS](/reference/metrics/advertising/google/google-efficiency/google-roas) | Return on ad spend |
| [Google CPA](/reference/metrics/advertising/google/google-efficiency/google-cpa) | Cost per purchase acquisition |
| [Google Cost per Purchase](/reference/metrics/advertising/google/google-efficiency/google-cost-per-purchase) | Cost to acquire one purchase |
| [Google All Conversions ROAS](/reference/metrics/advertising/google/google-efficiency/google-all-conversions-roas) | ROAS across all conversion types |
| [Google Cost per All Conversions](/reference/metrics/advertising/google/google-efficiency/google-cost-per-all-conversions) | Cost per any conversion |
| [Google CPV](/reference/metrics/advertising/google/google-efficiency/google-cpv) | Cost per video view |
| [Google Cost per View-Through Conversion](/reference/metrics/advertising/google/google-efficiency/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.
# Advertising Metrics: Track Ad Performance Across Platforms
Source: https://docs.upstackdata.com/reference/metrics/advertising/index
Track advertising performance across Meta, Google, TikTok, and blended views. View 305+ 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:** 305+
## Platforms
| Platform | Metrics | Description |
| --------------------------------------------------- | ------- | --------------------------------------------- |
| [Meta Ads](/reference/metrics/advertising/meta) | 97 | Facebook & Instagram advertising performance |
| [Google Ads](/reference/metrics/advertising/google) | 22 | Search, Display, Shopping & YouTube campaigns |
| [TikTok Ads](/reference/metrics/advertising/tiktok) | 61 | TikTok video advertising performance |
| [Blended](/reference/metrics/advertising/blended) | 110 | Cross-platform aggregated metrics |
## When to Use
| Goal | Platform | Key Metrics |
| ---------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Optimize Meta campaigns** | Meta Ads | [Meta ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-roas), [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa), [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) |
| **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)
| Subcategory | Metrics | Description |
| ------------------------------------------------------------------------ | ------- | ------------------------------------------ |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend) | 1 | Budget consumption tracking |
| [Meta Audience](/reference/metrics/advertising/meta/meta-audience) | 4 | Reach, impressions, frequency, CPM |
| [Meta Clicks](/reference/metrics/advertising/meta/meta-clicks) | 18 | CTR, CPC, link clicks, landing page views |
| [Meta Efficiency](/reference/metrics/advertising/meta/meta-efficiency) | 7 | ROAS, CPA, cost-per-purchase ratios |
| [Meta Conversions](/reference/metrics/advertising/meta/meta-conversions) | 32 | Purchases, leads, registrations, checkouts |
| [Meta Engagement](/reference/metrics/advertising/meta/meta-engagement) | 18 | Likes, comments, shares, reactions, saves |
| [Meta Video](/reference/metrics/advertising/meta/meta-video) | 15 | Views, completion rates, ThruPlay metrics |
### Key Meta Metrics
| Metric | Subcategory | Description |
| -------------------------------------------------------------------------------------- | ----------- | -------------------------------------- |
| [Meta ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-roas) | Efficiency | Return on ad spend from Meta campaigns |
| [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa) | Efficiency | Cost per acquisition |
| [Meta Ad Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Spend | Total budget consumed |
| [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) | Clicks | Click-through rate |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Conversions | Platform-reported purchase count |
| [Meta Impressions](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Audience | Number of ad impressions |
| [Meta Reach](/reference/metrics/advertising/meta/meta-audience/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) *(coming soon)*
| 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) *(coming soon)*
| 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) *(coming soon)*
| 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.
# Meta Advertising Metrics: Track Facebook & Instagram Ad Performance
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/index
Track Meta (Facebook/Instagram) ad performance in Upstack. View 100 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:** 100
## Subcategories
| Category | Metrics | Description |
| ------------------------------------------------------------------------ | ------- | ---------------------------------------------------------------- |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend) | 1 | Budget consumption and ad spend tracking |
| [Meta Audience](/reference/metrics/advertising/meta/meta-audience) | 4 | Reach, impressions, frequency, and audience cost metrics |
| [Meta Clicks](/reference/metrics/advertising/meta/meta-clicks) | 18 | Click types, click-through rates, and cost-per-click metrics |
| [Meta Efficiency](/reference/metrics/advertising/meta/meta-efficiency) | 7 | ROAS, CPA, and return-on-investment efficiency ratios |
| [Meta Conversions](/reference/metrics/advertising/meta/meta-conversions) | 35 | Purchase, lead, registration, and conversion event tracking |
| [Meta Engagement](/reference/metrics/advertising/meta/meta-engagement) | 19 | Social interactions including likes, comments, shares, and saves |
| [Meta Video](/reference/metrics/advertising/meta/meta-video) | 16 | Video views, ThruPlay, watch time, and completion rates |
***
## Subcategory Details
### Meta Spend
Track total advertising budget consumption across your Meta campaigns. Essential for budget monitoring and pacing.
→ [View Meta Spend Metrics](/reference/metrics/advertising/meta/meta-spend)
### Meta Audience
Measure how many people see your ads and how often. Includes reach, impressions, frequency, and CPM for understanding audience penetration.
→ [View Meta Audience Metrics](/reference/metrics/advertising/meta/meta-audience)
### Meta Clicks
Analyze user click behavior with 18 metrics covering different click types (link, inline, outbound), click-through rates, and cost-per-click metrics.
→ [View Meta Clicks Metrics](/reference/metrics/advertising/meta/meta-clicks)
### Meta Efficiency
Evaluate advertising ROI with efficiency ratios including ROAS, CPA, and cost-per-purchase metrics. Critical for optimizing campaign profitability.
→ [View Meta Efficiency Metrics](/reference/metrics/advertising/meta/meta-efficiency)
### Meta Conversions
Track Meta-attributed conversion events including purchases, add-to-carts, leads, registrations, and app installs. The largest subcategory with 35 metrics covering the full conversion funnel.
→ [View Meta Conversions Metrics](/reference/metrics/advertising/meta/meta-conversions)
### Meta Engagement
Measure social interactions including likes, comments, shares, saves, and reactions. Useful for brand awareness campaigns and content resonance analysis.
→ [View Meta Engagement Metrics](/reference/metrics/advertising/meta/meta-engagement)
### Meta Video
Track video ad performance with views, ThruPlay, watch time, and completion rate metrics. Essential for video-first campaign optimization.
→ [View Meta Video Metrics](/reference/metrics/advertising/meta/meta-video)
***
## When to Use Each Subcategory
| Goal | Start With |
| ---------------------------- | ------------------------------------------------------------------------ |
| Monitor budget pacing | [Meta Spend](/reference/metrics/advertising/meta/meta-spend) |
| Understand audience reach | [Meta Audience](/reference/metrics/advertising/meta/meta-audience) |
| Optimize for website traffic | [Meta Clicks](/reference/metrics/advertising/meta/meta-clicks) |
| Maximize return on ad spend | [Meta Efficiency](/reference/metrics/advertising/meta/meta-efficiency) |
| Track purchases and leads | [Meta Conversions](/reference/metrics/advertising/meta/meta-conversions) |
| Build brand awareness | [Meta Engagement](/reference/metrics/advertising/meta/meta-engagement) |
| Evaluate video campaigns | [Meta Video](/reference/metrics/advertising/meta/meta-video) |
***
## 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/meta-spend/meta-spend) | Total ad budget consumed |
### Audience Metrics
| Metric | Description |
| -------------------------------------------------------------------------------------- | -------------------------------------- |
| [Meta Impressions](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Number of times ads were shown |
| [Meta Reach](/reference/metrics/advertising/meta/meta-audience/meta-reach) | Unique people who saw your ads |
| [Meta Frequency](/reference/metrics/advertising/meta/meta-audience/meta-frequency) | Average times each person saw your ads |
| [Meta CPM](/reference/metrics/advertising/meta/meta-audience/meta-cpm) | Cost per 1,000 impressions |
### Click Metrics
| Metric | Description |
| ------------------------------------------------------------------------------------------------------------------ | ----------------------------- |
| [Meta Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-clicks) | All clicks on your ads |
| [Meta Link Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-link-clicks) | Clicks on ad links |
| [Meta Inline Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-inline-clicks) | Clicks on inline links |
| [Meta Outbound Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-outbound-clicks) | Clicks leaving Meta |
| [Meta Unique Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-unique-clicks) | Unique people who clicked |
| [Meta Landing Page Views](/reference/metrics/advertising/meta/meta-clicks/meta-landing-page-views) | Times landing page loaded |
| [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) | Click-through rate |
| [Meta Link CTR](/reference/metrics/advertising/meta/meta-clicks/meta-link-ctr) | Link clicks ÷ Impressions |
| [Meta Inline Clicks CTR](/reference/metrics/advertising/meta/meta-clicks/meta-inline-clicks-ctr) | Inline clicks ÷ Impressions |
| [Meta Outbound CTR](/reference/metrics/advertising/meta/meta-clicks/meta-outbound-ctr) | Outbound clicks ÷ Impressions |
| [Meta Unique CTR](/reference/metrics/advertising/meta/meta-clicks/meta-unique-ctr) | Unique clicks ÷ Reach |
| [Meta Landing Page View Rate](/reference/metrics/advertising/meta/meta-clicks/meta-landing-page-view-rate) | LP views ÷ Link clicks |
| [Meta CPC](/reference/metrics/advertising/meta/meta-clicks/meta-cpc) | Cost per click |
| [Meta Cost per Link Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-link-click) | Spend ÷ Link clicks |
| [Meta Cost per Inline Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-inline-click) | Spend ÷ Inline clicks |
| [Meta Cost per Outbound Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-outbound-click) | Spend ÷ Outbound clicks |
| [Meta Cost per Unique Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-unique-click) | Spend ÷ Unique clicks |
| [Meta Cost per Landing Page View](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-landing-page-view) | Spend ÷ Landing page views |
### Efficiency Metrics
| Metric | Description |
| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------ |
| [Meta ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-roas) | Return on ad spend |
| [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa) | Cost per purchase |
| [Meta CPP](/reference/metrics/advertising/meta/meta-efficiency/meta-cpp) | Cost per 1,000 people reached |
| [Meta Cost per Purchase](/reference/metrics/advertising/meta/meta-efficiency/meta-cost-per-purchase) | Spend ÷ Purchases |
| [Meta New Customer ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-roas) | ROAS from new customers |
| [Meta New Customer CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-cpa) | Cost to acquire new customers |
| [Meta New Customer Cost per Purchase](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-cost-per-purchase) | Spend ÷ New customer purchases |
### Conversion Metrics
| Metric | Description |
| --------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Attributed purchase count |
| [Meta Purchases Value](/reference/metrics/advertising/meta/meta-conversions/meta-purchases-value) | Revenue from purchases |
| [Meta New Customer Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-new-customer-purchases) | First-time buyer purchases |
| [Meta Add to Carts](/reference/metrics/advertising/meta/meta-conversions/meta-add-to-carts) | Add to cart actions |
| [Meta View Contents](/reference/metrics/advertising/meta/meta-conversions/meta-view-contents) | Product page views |
| [Meta Initiate Checkouts](/reference/metrics/advertising/meta/meta-conversions/meta-initiate-checkouts) | Checkout starts |
| [Meta Add Payment Info](/reference/metrics/advertising/meta/meta-conversions/meta-add-payment-info) | Payment info additions |
| [Meta Leads](/reference/metrics/advertising/meta/meta-conversions/meta-leads) | Lead form submissions |
| [Meta Completed Registrations](/reference/metrics/advertising/meta/meta-conversions/meta-completed-registrations) | Account sign-ups |
| [Meta App Installs](/reference/metrics/advertising/meta/meta-conversions/meta-app-installs) | Mobile app installs |
| [Meta Subscriptions](/reference/metrics/advertising/meta/meta-conversions/meta-subscriptions) | Subscription sign-ups |
| [Meta Subscribes](/reference/metrics/advertising/meta/meta-conversions/meta-subscribes) | Subscribe actions |
| [Meta Start Trials](/reference/metrics/advertising/meta/meta-conversions/meta-start-trials) | Trial initiations |
| [Meta Contact Events](/reference/metrics/advertising/meta/meta-conversions/meta-contact-events) | Contact form submissions |
| [Meta Customize Product Events](/reference/metrics/advertising/meta/meta-conversions/meta-customize-product-events) | Product customizations |
| [Meta Donate Events](/reference/metrics/advertising/meta/meta-conversions/meta-donate-events) | Donation actions |
| [Meta Find Location Events](/reference/metrics/advertising/meta/meta-conversions/meta-find-location-events) | Location searches |
| [Meta Schedule Events](/reference/metrics/advertising/meta/meta-conversions/meta-schedule-events) | Schedule bookings |
| [Meta Search Events](/reference/metrics/advertising/meta/meta-conversions/meta-search-events) | On-site searches |
| [Meta Submit Application Events](/reference/metrics/advertising/meta/meta-conversions/meta-submit-application-events) | Application submissions |
| [Meta Messaging Conversations Started](/reference/metrics/advertising/meta/meta-conversions/meta-messaging-conversations-started) | Messaging initiations |
| [Meta Cost per Add to Cart](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-add-to-cart) | Spend ÷ Add to carts |
| [Meta Cost per Lead](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-lead) | Spend ÷ Leads |
| [Meta Cost per Registration](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-registration) | Spend ÷ Registrations |
| [Meta Cost per Add Payment Info](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-add-payment-info) | Spend ÷ Payment info |
| [Meta Cost per Contact](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-contact) | Spend ÷ Contacts |
| [Meta Cost per Customize Product](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-customize-product) | Spend ÷ Customizations |
| [Meta Cost per Donate](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-donate) | Spend ÷ Donations |
| [Meta Cost per Find Location](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-find-location) | Spend ÷ Location searches |
| [Meta Cost per Schedule](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-schedule) | Spend ÷ Schedules |
| [Meta Cost per Search](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-search) | Spend ÷ Searches |
| [Meta Cost per Start Trial](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-start-trial) | Spend ÷ Trials |
| [Meta Cost per Submit Application](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-submit-application) | Spend ÷ Applications |
| [Meta Cost per Subscribe](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-subscribe) | Spend ÷ Subscribes |
### Engagement Metrics
| Metric | Description |
| -------------------------------------------------------------------------------------------------------- | ----------------------- |
| [Meta Engagements](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | All social interactions |
| [Meta Engagement Rate](/reference/metrics/advertising/meta/meta-engagement/meta-engagement-rate) | Engagements ÷ Reach |
| [Meta Likes](/reference/metrics/advertising/meta/meta-engagement/meta-likes) | Like reactions |
| [Meta Comments](/reference/metrics/advertising/meta/meta-engagement/meta-comments) | Comment count |
| [Meta Shares](/reference/metrics/advertising/meta/meta-engagement/meta-shares) | Share count |
| [Meta Saves](/reference/metrics/advertising/meta/meta-engagement/meta-saves) | Save/bookmark count |
| [Meta Reactions](/reference/metrics/advertising/meta/meta-engagement/meta-reactions) | All emoji reactions |
| [Meta Page Likes](/reference/metrics/advertising/meta/meta-engagement/meta-page-likes) | Page like actions |
| [Meta Post Comments](/reference/metrics/advertising/meta/meta-engagement/meta-post-comments) | Post comment count |
| [Meta Post Saves](/reference/metrics/advertising/meta/meta-engagement/meta-post-saves) | Post saves count |
| [Meta Post Shares](/reference/metrics/advertising/meta/meta-engagement/meta-post-shares) | Post share count |
| [Meta Photo Views](/reference/metrics/advertising/meta/meta-engagement/meta-photo-views) | Expanded photo views |
| [Meta Cost per Engagement](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-engagement) | Spend ÷ Engagements |
| [Meta Cost per Comment](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-comment) | Spend ÷ Comments |
| [Meta Cost per Share](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-share) | Spend ÷ Shares |
| [Meta Cost per Save](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-save) | Spend ÷ Saves |
| [Meta Cost per Page Like](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-page-like) | Spend ÷ Page likes |
| [Meta Cost per Photo View](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-photo-view) | Spend ÷ Photo views |
### Video Metrics
| Metric | Description |
| ----------------------------------------------------------------------------------------------------- | ---------------------------- |
| [Meta Video Views](/reference/metrics/advertising/meta/meta-video/meta-video-views) | 3+ second video views |
| [Meta Video Plays](/reference/metrics/advertising/meta/meta-video/meta-video-plays) | Video play starts |
| [Meta Video Completions](/reference/metrics/advertising/meta/meta-video/meta-video-completions) | 100% completion |
| [Meta ThruPlay](/reference/metrics/advertising/meta/meta-video/meta-thruplay) | ThruPlay views |
| [Meta ThruPlay Views](/reference/metrics/advertising/meta/meta-video/meta-thruplay-views) | ThruPlay view count |
| [Meta Video Views 15 Sec](/reference/metrics/advertising/meta/meta-video/meta-video-views-15-sec) | 15+ second views |
| [Meta Video Views 25%](/reference/metrics/advertising/meta/meta-video/meta-video-views-25-percent) | 25%+ completion |
| [Meta Video Views 50%](/reference/metrics/advertising/meta/meta-video/meta-video-views-50-percent) | 50%+ completion |
| [Meta Video Views 75%](/reference/metrics/advertising/meta/meta-video/meta-video-views-75-percent) | 75%+ completion |
| [Meta Video Views 100%](/reference/metrics/advertising/meta/meta-video/meta-video-views-100-percent) | 100% completion |
| [Meta Average Watch Time](/reference/metrics/advertising/meta/meta-video/meta-average-watch-time) | Average video watch duration |
| [Meta Cost per Video View](/reference/metrics/advertising/meta/meta-video/meta-cost-per-video-view) | Spend ÷ Video views |
| [Meta Cost per Video Play](/reference/metrics/advertising/meta/meta-video/meta-cost-per-video-play) | Spend ÷ Video plays |
| [Meta Cost per ThruPlay](/reference/metrics/advertising/meta/meta-video/meta-cost-per-thruplay) | Spend ÷ ThruPlay |
| [Meta Cost per 15 Sec View](/reference/metrics/advertising/meta/meta-video/meta-cost-per-15-sec-view) | Spend ÷ 15s views |
# Meta Audience Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-audience/index
Track Meta audience reach and impressions in Upstack. Monitor reach, impressions, frequency, and CPM for your Facebook and Instagram campaigns.
Audience metrics measure how many people see your Meta ads and how often. Track reach, impressions, frequency, and cost efficiency of audience delivery.
**Data Source:** Meta Marketing API\
**Metrics:** 4
## Metrics in This Group
| Metric | Description | When to Use |
| -------------------------------------------------------------------------------------- | -------------------------------------- | --------------------------------------- |
| [Meta Impressions](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Number of times ads were shown | Measure total ad exposure and scale |
| [Meta Reach](/reference/metrics/advertising/meta/meta-audience/meta-reach) | Unique people who saw your ads | Measure audience size and penetration |
| [Meta Frequency](/reference/metrics/advertising/meta/meta-audience/meta-frequency) | Average times each person saw your ads | Detect ad fatigue and optimize delivery |
| [Meta CPM](/reference/metrics/advertising/meta/meta-audience/meta-cpm) | Cost per 1,000 impressions | Evaluate delivery cost efficiency |
## How These Metrics Relate
* **Impressions** counts every time your ad appears on screen
* **Reach** counts unique individuals, regardless of how many times they saw it
* **Frequency** = Impressions ÷ Reach — shows average views per person
* **CPM** = Spend ÷ Impressions × 1,000 — measures delivery cost efficiency
High frequency can signal ad fatigue, while low CPM indicates efficient reach.
## Choosing the Right Metric
* **Awareness campaigns**: Use Impressions and Reach to measure visibility
* **Ad fatigue detection**: Monitor Frequency—above 3-4 may indicate fatigue
* **Cost efficiency**: Compare CPM across campaigns to find efficient delivery
* **Audience expansion**: Track Reach growth to measure new audience acquisition
# Meta CPM: Cost Per Thousand Impressions
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-audience/meta-cpm
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** ÷ **Meta Impressions** ) × 1,000
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------ | ------------------------------ |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta ads |
| [**Meta Impressions**](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Total times ads were shown |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-spend/meta-spend) | Numerator in CPM calculation |
| [Meta Impressions](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Denominator in CPM calculation |
| [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) | Engagement rate from those impressions |
[See all Meta Audience metrics →](/reference/metrics/advertising/meta/meta-audience)
# Meta Frequency: Average Ad Views per Person
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-audience/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** ÷ **Meta Reach**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------ |
| [**Meta Impressions**](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Total number of times your ads appeared on screen |
| [**Meta Reach**](/reference/metrics/advertising/meta/meta-audience/meta-reach) | Number of unique people who saw your ads at least once |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/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/meta-audience/meta-impressions) | Numerator—total ad views driving the frequency calculation |
| [Meta Reach](/reference/metrics/advertising/meta/meta-audience/meta-reach) | Denominator—unique audience size that determines frequency |
| [Meta CPM](/reference/metrics/advertising/meta/meta-audience/meta-cpm) | Cost efficiency at current frequency level—higher frequency often increases CPM |
[See all Meta Audience metrics →](/reference/metrics/advertising/meta/meta-audience)
# Meta Impressions: Total Ad Displays on Meta
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-audience/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/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/meta-audience/meta-reach) | Unique users who saw your ads (impressions ÷ reach = frequency) |
| [Meta Frequency](/reference/metrics/advertising/meta/meta-audience/meta-frequency) | Average times each person saw your ad |
| [Meta CPM](/reference/metrics/advertising/meta/meta-audience/meta-cpm) | Cost per 1,000 impressions—spend efficiency metric |
[See all Meta Audience metrics →](/reference/metrics/advertising/meta/meta-audience)
# Meta Reach: Unique People Who Saw Your Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-audience/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/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/meta-audience/meta-impressions) | Total ad views; reach × frequency = impressions |
| [Meta CPP](/reference/metrics/advertising/meta/meta-efficiency/meta-cpp) | Cost to reach each unique person |
[See all Meta Audience metrics →](/reference/metrics/advertising/meta/meta-audience)
# Meta Click Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/index
Track Meta click performance in Upstack. Monitor CTR, CPC, link clicks, landing page views, and outbound click metrics for your campaigns.
Click metrics measure how people interact with your Meta ads. Track total clicks, link clicks, landing page views, and the cost efficiency of driving traffic.
**Data Source:** Meta Marketing API\
**Metrics:** 18
## Metrics in This Group
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------------ | ----------------------------- | ------------------------------------- |
| [Meta Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-clicks) | All clicks on your ads | Measure total engagement interactions |
| [Meta CPC](/reference/metrics/advertising/meta/meta-clicks/meta-cpc) | Cost per click | Evaluate click cost efficiency |
| [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) | Click-through rate | Compare creative performance |
| [Meta Link Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-link-clicks) | Clicks on ad links | Measure traffic generation |
| [Meta Link Click-Through Rate](/reference/metrics/advertising/meta/meta-clicks/meta-link-ctr) | Link clicks ÷ Impressions | Evaluate link engagement rate |
| [Meta Cost per Link Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-link-click) | Spend ÷ Link clicks | Optimize traffic acquisition cost |
| [Meta Outbound Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-outbound-clicks) | Clicks leaving Meta | Track exits to your website |
| [Meta Outbound Click-Through Rate](/reference/metrics/advertising/meta/meta-clicks/meta-outbound-ctr) | Outbound clicks ÷ Impressions | Measure off-platform navigation rate |
| [Meta Cost per Outbound Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-outbound-click) | Spend ÷ Outbound clicks | Evaluate website visit cost |
| [Meta Unique Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-unique-clicks) | Unique people who clicked | Count distinct clickers |
| [Meta Unique Click-Through Rate](/reference/metrics/advertising/meta/meta-clicks/meta-unique-ctr) | Unique clicks ÷ Reach | Measure per-person engagement |
| [Meta Cost per Unique Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-unique-click) | Spend ÷ Unique clicks | Evaluate cost per new clicker |
| [Meta Inline Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-inline-clicks) | Clicks on inline links | Track in-content link engagement |
| [Meta Inline Link Click-Through Rate](/reference/metrics/advertising/meta/meta-clicks/meta-inline-ctr) | Inline clicks ÷ Impressions | Measure inline content performance |
| [Meta Cost per Inline Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-inline-click) | Spend ÷ Inline clicks | Optimize inline link costs |
| [Meta Landing Page Views](/reference/metrics/advertising/meta/meta-clicks/meta-landing-page-views) | Times landing page loaded | Verify actual page loads |
| [Meta Cost per Landing Page View](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-landing-page-view) | Spend ÷ Landing page views | Measure true traffic cost |
| [Meta Landing Page View Rate](/reference/metrics/advertising/meta/meta-clicks/meta-landing-page-view-rate) | LP views ÷ Link clicks | Identify bounce-before-load issues |
## How These Metrics Relate
* **Clicks** includes all interactions (link clicks, reactions, profile visits)
* **Link Clicks** are specifically clicks on your ad's destination link
* **Outbound Clicks** leave Meta to your website or app
* **Landing Page Views** show how many people actually loaded your page after clicking
* The gap between Link Clicks and Landing Page Views indicates bounce-before-load
## Choosing the Right Metric
* **Awareness campaigns**: Use Total Clicks and CTR to measure engagement breadth
* **Traffic campaigns**: Use Link Clicks and Landing Page Views for site visits
* **Efficiency analysis**: Compare CPC across campaigns to find cost-effective performers
* **Audience quality**: Use Unique Clicks to avoid counting repeat clickers
* **Landing page issues**: Compare Link Clicks vs Landing Page Views to detect load problems
# Meta Clicks: Total Engagement on Your Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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/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/meta-clicks/meta-link-clicks) | Subset of total clicks — only clicks that lead to a destination |
| [Meta CPC](/reference/metrics/advertising/meta/meta-clicks/meta-cpc) | Cost efficiency — spend divided by total clicks |
| [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) | Click-through rate — clicks as percentage of impressions |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Cost per Inline Click: Average Spend Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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** ÷ **Meta Inline Clicks**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising campaigns |
| [**Meta Inline Clicks**](/reference/metrics/advertising/meta/meta-clicks/meta-inline-clicks) | Number of clicks on inline links within your Meta ad content |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-clicks/meta-inline-clicks) | Denominator — total inline clicks driving this cost metric |
| [Meta CPC](/reference/metrics/advertising/meta/meta-clicks/meta-cpc) | Alternative — cost per all click types, not just inline links |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Numerator — total spend used in this calculation |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Cost per Landing Page View: Average Ad Cost per Page Load
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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** ÷ **Meta Landing Page Views**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta ads |
| [**Meta Landing Page Views**](/reference/metrics/advertising/meta/meta-clicks/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/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/meta-clicks/meta-landing-page-views) | The denominator in this calculation |
| [Meta Cost per Link Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-link-click) | Alternative click-based cost metric (includes all clicks) |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in this calculation |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Cost per Link Click: Website Traffic Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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** ÷ **Meta Link Clicks**
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta ads |
| [**Meta Link Clicks**](/reference/metrics/advertising/meta/meta-clicks/meta-link-clicks) | Clicks that direct users to your website, app, or other destination |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-clicks/meta-link-clicks) | Denominator—the click count used in this formula |
| [Meta CPC](/reference/metrics/advertising/meta/meta-clicks/meta-cpc) | Includes all clicks; compare to see engagement vs. traffic intent |
| [Meta Cost per Outbound Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-outbound-click) | Similar metric focused on clicks leaving Facebook/Instagram |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Cost per Outbound Click: Ad Traffic Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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** ÷ **Meta Outbound Clicks**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------ |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount billed by Meta for advertising during the period |
| [**Meta Outbound Clicks**](/reference/metrics/advertising/meta/meta-clicks/meta-outbound-clicks) | Clicks on your ad that directed users to destinations outside Meta |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-clicks/meta-outbound-clicks) | The click volume this cost metric is derived from |
| [Meta Cost per Link Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-link-click) | Broader click cost including CTA button clicks |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Cost per Unique Click: Average Cost for Unique Ad Engagers
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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** ÷ **Meta Unique Clicks**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising campaigns |
| [**Meta Unique Clicks**](/reference/metrics/advertising/meta/meta-clicks/meta-unique-clicks) | Number of unique people who clicked your Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-clicks/meta-unique-clicks) | The denominator in this calculation |
| [Meta CPC](/reference/metrics/advertising/meta/meta-clicks/meta-cpc) | Standard cost per click without de-duplication |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in this calculation |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta CPC: Cost Per Click on Meta Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/meta-cpc
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** ÷ **Meta Clicks**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------ | ------------------------------ |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta ads |
| [**Meta Clicks**](/reference/metrics/advertising/meta/meta-clicks/meta-clicks) | Total clicks on your ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-clicks/meta-clicks) | Denominator—total clicks used in CPC calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Numerator—total spend divided by clicks |
| [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) | Engagement rate—affects CPC through auction dynamics |
| [Meta Cost Per Link Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-link-click) | Alternative metric measuring cost of outbound clicks only |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta CTR: Measure Ad Click-Through Performance
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/meta-ctr
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** ÷ **Meta Impressions** ) × 100
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------ | ----------------------------------------- |
| [**Meta Clicks**](/reference/metrics/advertising/meta/meta-clicks/meta-clicks) | Total number of clicks on your Meta ads |
| [**Meta Impressions**](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Total number of times your ads were shown |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Meta Ads](/sources/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/meta-clicks/meta-clicks) | The numerator in the CTR calculation |
| [Meta Impressions](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | The denominator in the CTR calculation |
| [Meta Link CTR](/reference/metrics/advertising/meta/meta-clicks/meta-link-ctr) | CTR specifically for link clicks to your website |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Inline Clicks: Track Link Clicks Within Your Meta Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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/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/meta-clicks/meta-inline-clicks-ctr) | Click-through rate for inline links |
| [Meta Cost per Inline Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-inline-click) | Cost efficiency of inline clicks |
| [Meta Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-clicks) | Total clicks including CTA and inline |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Inline CTR: Measure In-Ad Link Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/meta-inline-clicks-ctr
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** ÷ **Meta Impressions** ) × 100
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| [**Meta Inline Clicks**](/reference/metrics/advertising/meta/meta-clicks/meta-inline-clicks) | Clicks on links embedded within ad content (carousel cards, text links) |
| [**Meta Impressions**](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Total number of times your ads were displayed |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Meta Ads](/sources/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/meta-clicks/meta-inline-clicks) | Numerator in the Inline CTR calculation |
| [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) | Overall click-through rate for comparison |
| [Meta Impressions](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Denominator in the Inline CTR calculation |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Landing Page View Rate: Measure Click-to-Load Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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** ÷ **Meta Link Clicks** ) × 100
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- |
| [**Meta Landing Page Views**](/reference/metrics/advertising/meta/meta-clicks/meta-landing-page-views) | Number of times your landing page fully loaded after an ad click |
| [**Meta Link Clicks**](/reference/metrics/advertising/meta/meta-clicks/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/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/meta-clicks/meta-landing-page-views) | Numerator—total landing page loads |
| [Meta Link Clicks](/reference/metrics/advertising/meta/meta-clicks/meta-link-clicks) | Denominator—total clicks on ad links |
| [Meta Cost per Landing Page View](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-landing-page-view) | Cost efficiency for actual page loads |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Landing Page Views: Track Ad Click Conversions
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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/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/meta-clicks/meta-link-clicks) | Total clicks before landing page load filter |
| [Meta Landing Page Views Cost](/reference/metrics/advertising/meta/meta-clicks/meta-landing-page-views-cost) | Cost per landing page view |
| [Meta Landing Page View Rate](/reference/metrics/advertising/meta/meta-clicks/meta-landing-page-view-rate) | Percentage of clicks that result in page views |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Link Clicks: Track Ad Link Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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/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/meta-clicks/meta-link-clicks-ctr) | Percentage of impressions resulting in link clicks |
| [Meta Cost per Link Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-link-click) | Average cost to generate one link click |
| [Meta Landing Page Views](/reference/metrics/advertising/meta/meta-clicks/meta-landing-page-views) | How many link clicks actually loaded your landing page |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Link CTR: Measure Ad Creative Performance
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/meta-link-ctr
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** ÷ **Meta Impressions** ) × 100
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- |
| [**Meta Link Clicks**](/reference/metrics/advertising/meta/meta-clicks/meta-link-clicks) | Clicks on your ad's call-to-action button or primary destination link |
| [**Meta Impressions**](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Total number of times your ads were shown |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Meta Ads](/sources/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/meta-clicks/meta-link-clicks) | The numerator—total clicks on your primary link |
| [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) | Broader metric counting all clicks, not just link clicks |
| [Meta Outbound CTR](/reference/metrics/advertising/meta/meta-clicks/meta-outbound-ctr) | Clicks that leave Meta entirely for your destination |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Outbound Clicks: Clicks Leaving Meta
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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/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/meta-clicks/meta-outbound-clicks-ctr) | Percentage of impressions resulting in outbound clicks |
| [Meta Cost Per Outbound Click](/reference/metrics/advertising/meta/meta-clicks/meta-cost-per-outbound-click) | Average cost for each outbound click |
| [Meta Landing Page Views](/reference/metrics/advertising/meta/meta-views/meta-landing-page-views) | Users who clicked and loaded your landing page |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Outbound Click-Through Rate: Website Traffic Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/meta-outbound-ctr
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** ÷ **Meta Impressions** ) × 100
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- |
| [**Meta Outbound Clicks**](/reference/metrics/advertising/meta/meta-clicks/meta-outbound-clicks) | Clicks on your ad that directed users to an external destination outside Meta |
| [**Meta Impressions**](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Total number of times your ad was displayed on screen |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Meta Ads](/sources/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/meta-clicks/meta-outbound-clicks) | Numerator—total clicks leaving Meta |
| [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) | Broader metric including all click types |
| [Meta Link CTR](/reference/metrics/advertising/meta/meta-clicks/meta-link-ctr) | CTR for primary link clicks specifically |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Unique Clicks: Distinct Ad Clickers
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/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/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/meta-clicks/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/meta-clicks/meta-unique-clicks-ctr) 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/meta-clicks/meta-clicks) | Total click count including repeat clicks from the same person |
| [Meta Unique Clicks CTR](/reference/metrics/advertising/meta/meta-clicks/meta-unique-clicks-ctr) | Click-through rate calculated using unique clickers |
| [Meta Impressions](/reference/metrics/advertising/meta/meta-audience/meta-impressions) | Total ad views that drive click behavior |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Unique CTR: Click Rate Without Repeat Clickers
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-clicks/meta-unique-ctr
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** ÷ **Meta Reach** ) × 100
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| [**Meta Unique Clicks**](/reference/metrics/advertising/meta/meta-clicks/meta-unique-clicks) | Number of distinct people who clicked on your ad at least once |
| [**Meta Reach**](/reference/metrics/advertising/meta/meta-audience/meta-reach) | Number of unique people who saw your ad at least once |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Meta Ads](/sources/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/meta-audience/meta-reach) | 85,000 | Unique people who saw the ad |
| [Meta Unique Clicks](/reference/metrics/advertising/meta/meta-clicks/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/meta-clicks/meta-ctr) 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/meta-clicks/meta-ctr) 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/meta-clicks/meta-unique-clicks) | The numerator—distinct people who clicked |
| [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) | Standard click-through rate based on impressions, not people |
| [Meta Reach](/reference/metrics/advertising/meta/meta-audience/meta-reach) | The denominator—unique people who saw your ad |
[See all Meta Clicks metrics →](/reference/metrics/advertising/meta/meta-clicks)
# Meta Conversion Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/index
Track Meta attributed conversions in Upstack. Monitor purchases, add-to-carts, leads, app installs, and 34 conversion events from your campaigns.
Conversion metrics track actions people take after engaging with your Meta ads. These include purchases, add-to-carts, leads, registrations, and other pixel or Conversions API events.
**Data Source:** Meta Marketing API + Meta Pixel/CAPI\
**Metrics:** 34
## Metrics in This Group
### E-commerce Conversions
| Metric | Description | When to Use |
| --------------------------------------------------------------------------------------------------------------- | -------------------------- | ---------------------------------- |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Attributed purchase count | Measure sales volume |
| [Meta Purchases Value](/reference/metrics/advertising/meta/meta-conversions/meta-purchases-value) | Revenue from purchases | Track revenue attribution |
| [Meta New Customer Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-new-customer-purchases) | First-time buyer purchases | Measure customer acquisition |
| [Meta Add to Carts](/reference/metrics/advertising/meta/meta-conversions/meta-add-to-carts) | Add to cart actions | Track purchase intent |
| [Meta View Contents](/reference/metrics/advertising/meta/meta-conversions/meta-view-contents) | Product page views | Measure product interest |
| [Meta Initiate Checkouts](/reference/metrics/advertising/meta/meta-conversions/meta-initiate-checkouts) | Checkout starts | Track conversion funnel progress |
| [Meta Add Payment Info](/reference/metrics/advertising/meta/meta-conversions/meta-add-payment-info) | Payment info additions | Measure checkout completion intent |
### Lead Generation
| Metric | Description | When to Use |
| --------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | ----------------------------- |
| [Meta Leads](/reference/metrics/advertising/meta/meta-conversions/meta-leads) | Lead form submissions | Track lead gen campaigns |
| [Meta Completed Registrations](/reference/metrics/advertising/meta/meta-conversions/meta-completed-registrations) | Account sign-ups | Measure sign-up campaigns |
| [Meta Contact Events](/reference/metrics/advertising/meta/meta-conversions/meta-contact-events) | Contact form submissions | Track inquiry volume |
| [Meta Submit Application Events](/reference/metrics/advertising/meta/meta-conversions/meta-submit-application-events) | Application submissions | Measure application campaigns |
| [Meta Messaging Conversations Started](/reference/metrics/advertising/meta/meta-conversions/meta-messaging-conversations-started) | Messaging initiations | Track click-to-message ads |
### App & Subscription
| Metric | Description | When to Use |
| --------------------------------------------------------------------------------------------- | --------------------- | ----------------------------------- |
| [Meta App Installs](/reference/metrics/advertising/meta/meta-conversions/meta-app-installs) | Mobile app installs | Measure app install campaigns |
| [Meta Subscriptions](/reference/metrics/advertising/meta/meta-conversions/meta-subscriptions) | Subscription sign-ups | Track recurring revenue acquisition |
| [Meta Subscribes](/reference/metrics/advertising/meta/meta-conversions/meta-subscribes) | Subscribe actions | Measure newsletter/list growth |
| [Meta Start Trials](/reference/metrics/advertising/meta/meta-conversions/meta-start-trials) | Trial initiations | Track trial sign-up campaigns |
### Other Conversions
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------------- | ---------------------- | ----------------------------- |
| [Meta Customize Product Events](/reference/metrics/advertising/meta/meta-conversions/meta-customize-product-events) | Product customizations | Track configurator engagement |
| [Meta Donate Events](/reference/metrics/advertising/meta/meta-conversions/meta-donate-events) | Donation actions | Measure fundraising campaigns |
| [Meta Find Location Events](/reference/metrics/advertising/meta/meta-conversions/meta-find-location-events) | Location searches | Track store locator usage |
| [Meta Schedule Events](/reference/metrics/advertising/meta/meta-conversions/meta-schedule-events) | Schedule bookings | Measure appointment campaigns |
| [Meta Search Events](/reference/metrics/advertising/meta/meta-conversions/meta-search-events) | On-site searches | Track search engagement |
### Cost per Conversion
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ------------------------------------ |
| [Meta Cost per Add to Cart](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-add-to-cart) | Spend ÷ Add to carts | Evaluate cart acquisition cost |
| [Meta Cost per Lead](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-lead) | Spend ÷ Leads | Optimize lead gen efficiency |
| [Meta Cost per Registration](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-registration) | Spend ÷ Registrations | Track sign-up acquisition cost |
| [Meta Cost per Add Payment Info](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-add-payment-info) | Spend ÷ Payment info | Measure checkout intent cost |
| [Meta Cost per Contact](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-contact) | Spend ÷ Contacts | Evaluate inquiry acquisition cost |
| [Meta Cost per Customize Product](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-customize-product) | Spend ÷ Customizations | Track configurator engagement cost |
| [Meta Cost per Donate](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-donate) | Spend ÷ Donations | Evaluate fundraising efficiency |
| [Meta Cost per Find Location](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-find-location) | Spend ÷ Location searches | Measure store visit intent cost |
| [Meta Cost per Schedule](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-schedule) | Spend ÷ Schedules | Track appointment acquisition cost |
| [Meta Cost per Search](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-search) | Spend ÷ Searches | Evaluate search engagement cost |
| [Meta Cost per Start Trial](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-start-trial) | Spend ÷ Trials | Measure trial acquisition efficiency |
| [Meta Cost per Submit Application](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-submit-application) | Spend ÷ Applications | Evaluate application cost |
| [Meta Cost per Subscribe](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-subscribe) | Spend ÷ Subscribes | Track subscriber acquisition cost |
## How Attribution Works
Meta attributes conversions using its attribution window. Default is 7-day click and 1-day view—meaning conversions are attributed if someone clicked within 7 days or viewed within 1 day.
## Choosing the Right Metric
* **E-commerce**: Use Purchases and Purchases Value for revenue impact
* **Lead generation**: Use Leads and Completed Registrations for pipeline building
* **Funnel analysis**: Track View Contents → Add to Cart → Initiate Checkout → Purchase
* **Cost efficiency**: Use Cost per \[Event] metrics to evaluate campaign efficiency
* **New customer focus**: Use New Customer Purchases to isolate acquisition
# Meta Add Payment Info: Payment Details Entered from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-add-payment-info) | Efficiency of driving payment submissions |
| [Meta Initiate Checkouts](/reference/metrics/advertising/meta/meta-conversions/meta-initiate-checkouts) | Previous step in the purchase funnel |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Final conversion after payment info |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Add to Carts: Mid-Funnel Purchase Intent
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-add-to-cart) | Efficiency metric for add-to-cart acquisition |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Final conversion event in the purchase funnel |
| [Meta Initiate Checkouts](/reference/metrics/advertising/meta/meta-conversions/meta-initiate-checkouts) | Next step in the funnel after add-to-cart |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta App Installs: Mobile App Installations from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-spend/meta-spend) | Total ad investment used to calculate cost per install |
| [Meta Completed Registrations](/reference/metrics/advertising/meta/meta-conversions/meta-completed-registrations) | Users who registered after installing your app |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Completed Registrations: Account Sign-ups from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-registration) | Spend efficiency per registration |
| [Meta Leads](/reference/metrics/advertising/meta/meta-conversions/meta-leads) | Earlier funnel stage before registration |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total ad spend used to calculate cost per registration |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Contact Events: Contact Form Submissions from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-contact) | Cost to acquire each contact event |
| [Meta Leads](/reference/metrics/advertising/meta/meta-conversions/meta-leads) | Alternative lead metric for form submissions |
| [Meta Schedule Events](/reference/metrics/advertising/meta/meta-conversions/meta-schedule-events) | Appointment booking metric |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Add Payment Info: Payment Entry Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Add Payment Info**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| [**Meta Add Payment Info**](/reference/metrics/advertising/meta/meta-conversions/meta-add-payment-info) | Count of add-payment-info events attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-add-payment-info) | The denominator in this calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in this calculation |
| [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa) | Similar efficiency metric for purchase conversions |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Add to Cart: Purchase Intent Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Add to Carts**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| [**Meta Add to Carts**](/reference/metrics/advertising/meta/meta-conversions/meta-add-to-carts) | Count of add-to-cart events attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-add-to-carts) | The denominator in this calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in this calculation |
| [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa) | Similar efficiency metric for purchase conversions |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Contact: Contact Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Contact Events**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| [**Meta Contact Events**](/reference/metrics/advertising/meta/meta-conversions/meta-contact-events) | Number of contact submissions attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-contact-events) | The denominator in this calculation |
| [Meta Cost per Lead](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-lead) | Similar metric for lead form submissions |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in this calculation |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Customize Product: Customization Event Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Customize Product Events**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| [**Meta Customize Product Events**](/reference/metrics/advertising/meta/meta-conversions/meta-customize-product-events) | Count of customize product events attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-customize-product-events) | The denominator in this calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in this calculation |
| [Meta Cost per Add to Cart](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-add-to-cart) | Similar efficiency metric for the next funnel step |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Donate: Donation Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Donate Events**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total advertising spend on Meta platforms (Facebook, Instagram) |
| [**Meta Donate Events**](/reference/metrics/advertising/meta/meta-conversions/meta-donate-events) | Count of donate events attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-donate-events) | The denominator in cost per donate calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in cost per donate calculation |
| [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa) | Similar efficiency metric for purchase conversions |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Find Location: Store Locator Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Find Location Events**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total advertising spend on Meta platforms |
| [**Meta Find Location Events**](/reference/metrics/advertising/meta/meta-conversions/meta-find-location-events) | Count of find location events attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-spend/meta-spend) | Numerator—total Meta ad cost |
| [Meta Find Location Events](/reference/metrics/advertising/meta/meta-conversions/meta-find-location-events) | Denominator—location search events |
| [Meta CPC](/reference/metrics/advertising/meta/meta-clicks/meta-cpc) | Compare click efficiency to location efficiency |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Lead: Lead Generation Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Leads**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount billed by Meta for your advertising |
| [**Meta Leads**](/reference/metrics/advertising/meta/meta-conversions/meta-leads) | Count of lead form submissions or lead events from your ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-leads) | The denominator in CPL calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in CPL calculation |
| [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa) | Similar efficiency metric for purchase conversions |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Registration: Registration Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Completed Registrations**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta ads |
| [**Meta Completed Registrations**](/reference/metrics/advertising/meta/meta-conversions/meta-completed-registrations) | Number of completed sign-ups attributed to Meta |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-completed-registrations) | Denominator—total registrations used in calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Numerator—total spend divided by registrations |
| [Meta Cost per Lead](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-lead) | Similar efficiency metric for earlier-funnel lead events |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Schedule: Appointment Booking Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Schedule Events**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| [**Meta Schedule Events**](/reference/metrics/advertising/meta/meta-conversions/meta-schedule-events) | Number of appointment bookings attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-schedule-events) | The denominator in this calculation |
| [Meta Cost per Contact](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-contact) | Similar metric for contact form submissions |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in this calculation |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Search: Search Event Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Search Events**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising campaigns |
| [**Meta Search Events**](/reference/metrics/advertising/meta/meta-conversions/meta-search-events) | Number of on-site searches attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-search-events) | Denominator showing total searches generated |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Numerator showing total advertising investment |
| [Meta CPC](/reference/metrics/advertising/meta/meta-clicks/meta-cpc) | Cost per click for broader engagement comparison |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Start Trial: Trial Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Start Trials**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising campaigns |
| [**Meta Start Trials**](/reference/metrics/advertising/meta/meta-conversions/meta-start-trials) | Count of free trial initiations attributed to your Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-start-trials) | The denominator—trial volume generated by your ads |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator—total ad investment |
| [Meta Subscriptions](/reference/metrics/advertising/meta/meta-conversions/meta-subscriptions) | Completed subscriptions after trial conversion |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Submit Application: Application Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Submit Application Events**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising campaigns |
| [**Meta Submit Application Events**](/reference/metrics/advertising/meta/meta-conversions/meta-submit-application-events) | Number of application submissions attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-submit-application-events) | Denominator showing total applications received |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Numerator showing total advertising investment |
| [Meta CPA](/reference/metrics/advertising/meta/meta-conversions/meta-cpa) | General cost per action for comparison |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Cost per Subscribe: Subscription Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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** ÷ **Meta Subscribes**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta ads |
| [**Meta Subscribes**](/reference/metrics/advertising/meta/meta-conversions/meta-subscribes) | Number of subscription sign-ups attributed to ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-subscribes) | Denominator—subscription events used in calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Numerator—total spend divided by subscribes |
| [Meta Cost per Lead](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-lead) | Top-of-funnel cost metric for lead generation |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Customize Product: Product Customizations from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-customize-product) | Efficiency of driving product customizations |
| [Meta Add to Carts](/reference/metrics/advertising/meta/meta-conversions/meta-add-to-carts) | Next typical step after customizing a product |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Final conversion event in the purchase funnel |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Donate Events: Donations from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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 )
### 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/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/meta-spend/meta-spend) | Ad spend used to calculate cost per donation |
| [Meta Conversions](/reference/metrics/advertising/meta/meta-conversions/meta-conversions) | Total attributed conversions including donations |
| [Meta ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-roas) | Overall return on ad spend for all conversion types |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Find Location: Store Locator Uses from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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 )
### 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/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/meta-conversions/meta-cost-per-find-location) | Efficiency of driving store searches |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total ad spend used to calculate cost per find location |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Conversions that may follow store visits |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Initiate Checkouts: Bottom-Funnel Conversion Signal
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-initiate-checkout) | Cost efficiency for driving checkouts |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Final conversions from these checkout initiations |
| [Meta Add to Carts](/reference/metrics/advertising/meta/meta-conversions/meta-add-to-carts) | Mid-funnel step before checkout |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Leads: Lead Form Submissions from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-lead) | Cost to acquire each lead |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator for calculating CPL |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Downstream conversions from lead campaigns |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Messaging Conversations: Chat Initiations from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-spend/meta-spend) | Total ad spend used to calculate cost per conversation |
| [Meta Contact Events](/reference/metrics/advertising/meta/meta-conversions/meta-contact-events) | Alternative metric for broader contact tracking |
| [Meta Leads](/reference/metrics/advertising/meta/meta-conversions/meta-leads) | Form-based lead generation alternative to messaging |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta NC Purchases: New Customer Attributed Conversions
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/meta-conversions/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/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/meta-conversions/meta-purchases) | Total purchases including new and returning customers |
| [Meta NC Purchases Value](/reference/metrics/advertising/meta/meta-conversions/meta-new-customer-purchases-value) | Revenue from first-time buyers |
| [Meta NC CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-cpa) | Cost to acquire each new customer |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Purchases: Attributed Conversion Count
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-purchases-value) | Total revenue from these purchases |
| [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa) | Cost per purchase conversion |
| [Meta ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-roas) | Return on ad spend from purchases |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Purchases Value: Attributed Revenue
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-purchases) | Count of purchases (this metric sums their values) |
| [Meta ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-roas) | Purchases Value ÷ Ad Spend |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The denominator for ROAS calculations |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Schedule Events: Appointment Bookings from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-schedule) | Cost to acquire each booking |
| [Meta Contact Events](/reference/metrics/advertising/meta/meta-conversions/meta-contact-events) | Alternative lead metric for inquiries |
| [Meta Leads](/reference/metrics/advertising/meta/meta-conversions/meta-leads) | Form submission lead metric |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Search Events: On-Site Searches from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-search) | Efficiency metric showing cost to generate each search |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total ad spend used to calculate search costs |
| [Meta Add to Cart Events](/reference/metrics/advertising/meta/meta-conversions/meta-add-to-cart-events) | Next funnel step after product discovery |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Start Trials: Free Trial Sign-ups from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-start-trial) | Average spend required to generate one trial start |
| [Meta Subscriptions](/reference/metrics/advertising/meta/meta-conversions/meta-subscriptions) | Completed subscriptions—tracks trial-to-paid conversion |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total ad spend used to calculate cost per trial |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Submit Application: Application Submissions from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-submit-application) | Efficiency metric showing cost to acquire each application |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total ad spend used to calculate application costs |
| [Meta Conversions](/reference/metrics/advertising/meta/meta-conversions/meta-conversions) | Total conversions including applications |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Subscribes: Subscription Sign-ups from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-subscribe) | Meta Spend ÷ Meta Subscribes |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | One-time purchases vs recurring subscriptions |
| [Meta Start Trials](/reference/metrics/advertising/meta/meta-conversions/meta-start-trials) | Trial conversions that may become subscribers |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Subscriptions: Subscription Sign-ups from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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/meta-conversions/meta-cost-per-subscribe) | Cost to acquire each subscriber |
| [Meta Start Trials](/reference/metrics/advertising/meta/meta-conversions/meta-start-trials) | Trial initiations that may convert to subscriptions |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | One-time purchase conversions for comparison |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta View Contents: Product Page Views from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-conversions/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/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](/reference/metrics/advertising/meta/meta-conversions/meta-cost-per-view-content) | Efficiency of driving product page views |
| [Meta Add to Carts](/reference/metrics/advertising/meta/meta-conversions/meta-add-to-carts) | Next step in the purchase funnel |
| [Meta Purchases](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Final conversion from product views |
[See all Meta Conversions metrics →](/reference/metrics/advertising/meta/meta-conversions)
# Meta Efficiency Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-efficiency/index
Track Meta ad efficiency in Upstack. Monitor ROAS, CPA, CPP, and cost-per-action metrics to optimize your Facebook and Instagram campaign ROI.
Efficiency metrics evaluate the return you get from your Meta advertising spend. Track ROAS, CPA, and other cost-per-outcome metrics to optimize campaign profitability.
**Data Source:** Meta Marketing API\
**Metrics:** 7
## Metrics in This Group
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------ | ------------------------------------------- |
| [Meta ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-roas) | Return on ad spend | Measure overall campaign profitability |
| [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa) | Cost per purchase | Evaluate acquisition cost efficiency |
| [Meta Cost per Purchase](/reference/metrics/advertising/meta/meta-efficiency/meta-cost-per-purchase) | Spend ÷ Purchases | Calculate precise purchase acquisition cost |
| [Meta CPP](/reference/metrics/advertising/meta/meta-efficiency/meta-cpp) | Cost per 1,000 people reached | Measure audience acquisition efficiency |
| [Meta New Customer ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-roas) | ROAS from new customers | Measure acquisition campaign profitability |
| [Meta New Customer CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-cpa) | Cost to acquire new customers | Track first-time buyer acquisition cost |
| [Meta New Customer Cost per Purchase](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-cost-per-purchase) | Spend ÷ New customer purchases | Evaluate new customer efficiency |
## How These Metrics Relate
* **ROAS** = Revenue ÷ Spend — measures overall profitability
* **CPA** = Spend ÷ Purchases — measures acquisition cost
* **New Customer metrics** filter to first-time buyers only
A ROAS above 1x means revenue exceeds spend. Target CPA depends on your margins and customer lifetime value.
## Choosing the Right Metric
* **Profitability focus**: Use ROAS to ensure revenue exceeds spend
* **Acquisition campaigns**: Use CPA/CPP to measure cost per outcome
* **New customer acquisition**: Use New Customer metrics to isolate first-time buyer efficiency
* **Budget allocation**: Compare ROAS across campaigns to optimize spend distribution
* **LTV analysis**: Compare CPA against customer lifetime value for sustainable growth
# Meta Cost per Purchase: Track Ad Acquisition Cost
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-efficiency/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** ÷ **Meta Purchases**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------- | ------------------------------------------ |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| [**Meta Purchases**](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Number of purchases attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-purchases) | The denominator in this calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in this calculation |
| [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa) | Alternative name for cost per acquisition |
# Meta CPA: Cost Per Acquisition from Meta Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-efficiency/meta-cpa
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** ÷ **Meta Purchases**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------- | ------------------------------------------ |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| [**Meta Purchases**](/reference/metrics/advertising/meta/meta-conversions/meta-purchases) | Number of purchases attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-purchases) | Conversion count used in denominator |
| [Meta ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-roas) | Revenue efficiency vs cost efficiency |
| [Meta New Customer CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-cpa) | Acquisition cost for first-time buyers only |
# Meta CPP: Cost to Reach 1,000 Unique People
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-efficiency/meta-cpp
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** ÷ **Meta Reach** ) × 1,000
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------ | ---------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| [**Meta Reach**](/reference/metrics/advertising/meta/meta-audience/meta-reach) | Number of unique people who saw your ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-audience/meta-reach) | Unique people reached—the denominator in CPP |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total ad spend—the numerator in CPP |
| [Meta CPM](/reference/metrics/advertising/meta/meta-audience/meta-cpm) | Cost per 1,000 impressions (counts repeat views) |
# Meta New Customer Cost per Purchase: Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-efficiency/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** ÷ **Meta New Customer Purchases**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| [**Meta New Customer Purchases**](/reference/metrics/advertising/meta/meta-conversions/meta-new-customer-purchases) | Number of purchases by first-time buyers attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-new-customer-purchases) | The denominator in this calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in this calculation |
| [Meta New Customer CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-cpa) | Equivalent metric using standard CPA terminology |
# Meta New Customer CPA: Measure First-Time Buyer Acquisition Cost
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-cpa
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** ÷ **Meta New Customer Purchases**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| [**Meta New Customer Purchases**](/reference/metrics/advertising/meta/meta-conversions/meta-new-customer-purchases) | Number of purchases by first-time buyers attributed to Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-conversions/meta-new-customer-purchases) | Conversion count used in denominator |
| [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa) | Blended acquisition cost (all customers) |
| [Meta New Customer ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-roas) | Revenue efficiency for first-time buyers |
# Meta New Customer ROAS: Measure Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-roas
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**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| [**Meta New Customer Purchases Value**](/reference/metrics/advertising/meta/meta-conversions/meta-new-customer-purchases-value) | Revenue from purchases by first-time buyers attributed to Meta ads |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Ratio (multiplier) |
| **Data Source** | [Meta Ads](/sources/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/meta-efficiency/meta-roas) | Overall return including repeat buyers |
| [Meta New Customer Purchases Value](/reference/metrics/advertising/meta/meta-conversions/meta-new-customer-purchases-value) | The revenue component of NC ROAS |
| [Meta New Customer CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-cpa) | Cost-based view of acquisition efficiency |
# Meta ROAS: Measure Your Meta Ad Return on Investment
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-efficiency/meta-roas
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** ÷ **Meta Spend**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| [**Meta Purchases Value**](/reference/metrics/advertising/meta/meta-conversions/meta-purchases-value) | Total revenue from purchases attributed to Meta ads |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Ratio (multiplier) |
| **Data Source** | [Meta Ads](/sources/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/meta-spend/meta-spend) | The denominator in ROAS calculation |
| [Meta Purchases Value](/reference/metrics/advertising/meta/meta-conversions/meta-purchases-value) | The numerator in ROAS calculation |
| [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa) | Cost efficiency per purchase (inverse perspective) |
| [Meta New Customer ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-new-customer-roas) | ROAS from first-time buyers only |
# Meta Engagement Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/index
Track Meta social engagement in Upstack. Monitor likes, comments, shares, reactions, and saves to measure ad resonance on Facebook and Instagram.
Engagement metrics measure how people interact socially with your Meta ads. Track likes, comments, shares, reactions, and saves to understand content resonance.
**Data Source:** Meta Marketing API\
**Metrics:** 18
## Metrics in This Group
### Engagement Totals
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------ | ----------------------- | --------------------------------------- |
| [Meta Engagements](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | All social interactions | Measure total engagement volume |
| [Meta Engagement Rate](/reference/metrics/advertising/meta/meta-engagement/meta-engagement-rate) | Engagements ÷ Reach | Compare engagement relative to audience |
### Social Actions
| Metric | Description | When to Use |
| -------------------------------------------------------------------------------------------- | -------------------- | ---------------------------------- |
| [Meta Likes](/reference/metrics/advertising/meta/meta-engagement/meta-likes) | Like reactions | Measure positive sentiment |
| [Meta Comments](/reference/metrics/advertising/meta/meta-engagement/meta-comments) | Comment count | Track discussion and conversation |
| [Meta Shares](/reference/metrics/advertising/meta/meta-engagement/meta-shares) | Share count | Measure viral potential |
| [Meta Saves](/reference/metrics/advertising/meta/meta-engagement/meta-saves) | Save/bookmark count | Track content value and intent |
| [Meta Reactions](/reference/metrics/advertising/meta/meta-engagement/meta-reactions) | All emoji reactions | Measure emotional response breadth |
| [Meta Page Likes](/reference/metrics/advertising/meta/meta-engagement/meta-page-likes) | Page like actions | Track follower acquisition |
| [Meta Post Comments](/reference/metrics/advertising/meta/meta-engagement/meta-post-comments) | Post comment count | Measure post-level conversation |
| [Meta Post Saves](/reference/metrics/advertising/meta/meta-engagement/meta-post-saves) | Post saves count | Track content bookmark rate |
| [Meta Post Shares](/reference/metrics/advertising/meta/meta-engagement/meta-post-shares) | Post share count | Measure organic amplification |
| [Meta Photo Views](/reference/metrics/advertising/meta/meta-engagement/meta-photo-views) | Expanded photo views | Track image engagement depth |
### Cost per Engagement
| Metric | Description | When to Use |
| -------------------------------------------------------------------------------------------------------- | ------------------- | -------------------------------------- |
| [Meta Cost per Engagement](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-engagement) | Spend ÷ Engagements | Evaluate overall engagement efficiency |
| [Meta Cost per Comment](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-comment) | Spend ÷ Comments | Track discussion acquisition cost |
| [Meta Cost per Share](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-share) | Spend ÷ Shares | Measure viral amplification cost |
| [Meta Cost per Save](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-save) | Spend ÷ Saves | Evaluate content value cost |
| [Meta Cost per Page Like](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-page-like) | Spend ÷ Page likes | Track follower acquisition cost |
| [Meta Cost per Photo View](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-photo-view) | Spend ÷ Photo views | Measure image engagement cost |
## How These Metrics Relate
* **Engagements** = Total of all social actions (likes, comments, shares, saves, reactions)
* **Reactions** include all emoji responses (love, wow, haha, etc.)
* **Likes** are specifically thumbs-up reactions
* **Shares** extend organic reach at no additional cost
* **Engagement Rate** = Engagements ÷ Reach × 100
High engagement signals resonant creative and can improve delivery efficiency.
## Choosing the Right Metric
* **Brand awareness**: Use Engagements and Engagement Rate for overall resonance
* **Community building**: Track Comments, Shares, and Page Likes
* **Content strategy**: Use Saves to identify high-value content
* **Viral potential**: Monitor Shares to find content worth amplifying
* **Cost optimization**: Compare Cost per Engagement across campaigns
# Meta Comments: Track Ad Conversation Volume
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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 )
### Formula Components
| Metric | Definition |
| ------------ | ---------------------------------------------------------------------- |
| **Comments** | Each comment posted on your ad, including replies to existing comments |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/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/meta-engagement/meta-cost-per-comment) | Measures how much you spend for each comment received |
| [Meta Engagements](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | Parent metric that includes comments plus likes, shares, and saves |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Cost per Comment: Ad Spend per Post Comment
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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** ÷ **Meta Comments**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------- | -------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising |
| [**Meta Comments**](/reference/metrics/advertising/meta/meta-engagement/meta-comments) | Total comments left on your Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-engagement/meta-comments) | The comment volume this metric divides spend by |
| [Meta Cost per Engagement](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-engagement) | Broader engagement efficiency including all interaction types |
| [Meta Engagement Rate](/reference/metrics/advertising/meta/meta-engagement/meta-engagement-rate) | Shows engagement as percentage of reach, not cost efficiency |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Cost per Engagement: Measure Brand Interaction Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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** ÷ **Meta Engagements**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising campaigns |
| [**Meta Engagements**](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | Total social interactions (likes, comments, shares, saves) on your Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-engagement/meta-engagements) | The denominator — total interactions driving this cost metric |
| [Meta Engagement Rate](/reference/metrics/advertising/meta/meta-engagement/meta-engagement-rate) | Percentage view showing engagement efficiency without cost context |
| [Meta CPM](/reference/metrics/advertising/meta/meta-audience/meta-cpm) | Cost per thousand impressions — compare reach efficiency vs engagement efficiency |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Cost per Page Like: Follower Acquisition Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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** ÷ **Meta Page Likes**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------ | ----------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising campaigns |
| [**Meta Page Likes**](/reference/metrics/advertising/meta/meta-engagement/meta-page-likes) | Number of Facebook Page follows attributed to your Meta ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-engagement/meta-page-likes) | The follower count this metric divides spend by |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The ad spend this metric divides by page likes |
| [Meta Cost per Engagement](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-engagement) | Broader engagement cost including all social actions |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Cost per Photo View: Photo Ad Engagement Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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** ÷ **Meta Photo Views**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising campaigns |
| [**Meta Photo Views**](/reference/metrics/advertising/meta/meta-engagement/meta-photo-views) | Number of times photos in your Meta ads were viewed |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-engagement/meta-photo-views) | Denominator in this calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Numerator in this calculation |
| [Meta CPM](/reference/metrics/advertising/meta/meta-audience/meta-cpm) | Alternative cost efficiency metric based on impressions |
| [Meta CPC](/reference/metrics/advertising/meta/meta-clicks/meta-cpc) | Cost efficiency metric based on clicks |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Cost per Save: Efficiency of Ad Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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** ÷ **Meta Saves**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------- | ------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising campaigns |
| [**Meta Saves**](/reference/metrics/advertising/meta/meta-engagement/meta-saves) | Number of times users saved your ad for later reference |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-engagement/meta-saves) | The volume metric this efficiency metric normalizes |
| [Meta Cost per Engagement](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-engagement) | Broader engagement efficiency including all interaction types |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The numerator in this cost efficiency calculation |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Cost per Share: Ad Spend per Share Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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** ÷ **Meta Shares**
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------------- | ------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising campaigns |
| [**Meta Shares**](/reference/metrics/advertising/meta/meta-engagement/meta-shares) | Number of times users shared your Meta ad content |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-engagement/meta-shares) | Denominator in this calculation |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Numerator in this calculation |
| [Meta Cost per Engagement](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-engagement) | Broader engagement efficiency including all interaction types |
| [Meta Engagement Rate](/reference/metrics/advertising/meta/meta-engagement/meta-engagement-rate) | Shows engagement as percentage of reach, not cost efficiency |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Engagement Rate: Measure Ad Creative Resonance
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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** ÷ **Meta Reach** ) × 100
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [**Meta Engagements**](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | Total interactions on your ads including reactions, comments, shares, and saves |
| [**Meta Reach**](/reference/metrics/advertising/meta/meta-audience/meta-reach) | Number of unique people who saw your ads at least once |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Percentage |
| **Data Source** | [Meta Ads](/sources/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/meta-engagement/meta-engagements) | The numerator (total interactions) |
| [Meta Cost per Engagement](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-engagement) | Spend efficiency for driving engagements |
| [Meta Reach](/reference/metrics/advertising/meta/meta-audience/meta-reach) | The denominator (unique people) |
| [Meta CTR](/reference/metrics/advertising/meta/meta-clicks/meta-ctr) | Click-based engagement measure |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Engagements: Track Total Social Ad Interactions
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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/meta-engagement/meta-reactions) + [**Meta Comments**](/reference/metrics/advertising/meta/meta-engagement/meta-comments) + [**Meta Shares**](/reference/metrics/advertising/meta/meta-engagement/meta-shares) + [**Meta Saves**](/reference/metrics/advertising/meta/meta-engagement/meta-saves)
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| [**Meta Reactions**](/reference/metrics/advertising/meta/meta-engagement/meta-reactions) | Emoji responses on your ads including likes, loves, wows, and cares |
| [**Meta Comments**](/reference/metrics/advertising/meta/meta-engagement/meta-comments) | Comments posted directly on your ads including threaded replies |
| [**Meta Shares**](/reference/metrics/advertising/meta/meta-engagement/meta-shares) | Times users shared your ad to their feed, stories, or DMs |
| [**Meta Saves**](/reference/metrics/advertising/meta/meta-engagement/meta-saves) | Times users bookmarked your ad for later viewing |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/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/meta-engagement/meta-cost-per-engagement) | How much you pay per interaction |
| [Meta Engagement Rate](/reference/metrics/advertising/meta/meta-engagement/meta-engagement-rate) | Engagements as a percentage of reach |
| [Meta Reactions](/reference/metrics/advertising/meta/meta-engagement/meta-reactions) | Emoji reactions component of engagements |
| [Meta Shares](/reference/metrics/advertising/meta/meta-engagement/meta-shares) | Share component driving organic amplification |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Likes: Track Positive Engagement on Your Meta Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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 )
### Formula Components
| Metric | Definition |
| -------------- | ------------------------------------------------ |
| **Post Likes** | Thumbs-up reactions recorded by Meta on your ads |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Number |
| **Data Source** | [Meta Ads](/sources/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/meta-engagement/meta-reactions) | Broader count including all emoji reactions |
| [Meta Engagements](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | Total interactions including comments, shares, and saves |
| [Meta Cost per Engagement](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-engagement) | Measures efficiency—spend required for each engagement |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Page Likes: Grow Your Organic Facebook Audience
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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/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/meta-engagement/meta-cost-per-page-like) | Spend required for each new page follower |
| [Meta Engagements](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | Total ad interactions including reactions, comments, and shares |
| [Meta Likes](/reference/metrics/advertising/meta/meta-engagement/meta-likes) | Likes on your ads, distinct from page follows |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Photo Views: Track Visual Content Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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/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/meta-engagement/meta-cost-per-photo-view) | How much you pay per expanded photo view |
| [Meta Engagements](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | Total social interactions including photo views |
| [Meta Reactions](/reference/metrics/advertising/meta/meta-engagement/meta-reactions) | Emoji reactions to your visual content |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Post Comments: Track Ad Conversation Depth
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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/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/meta-engagement/meta-cost-per-comment) | Measures spend efficiency per comment received |
| [Meta Engagements](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | Parent metric that includes comments plus likes, shares, and saves |
| [Meta Post Shares](/reference/metrics/advertising/meta/meta-engagement/meta-post-shares) | Measures organic amplification through user shares |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Post Saves: Track Ad Saves & Purchase Intent
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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/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/meta-engagement/meta-cost-per-save) | Efficiency of driving saves |
| [Meta Engagements](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | Total interactions including saves |
| [Meta Add to Carts](/reference/metrics/advertising/meta/meta-conversions/meta-add-to-carts) | Downstream conversion from saved ads |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Post Shares: Track Ad Content Virality
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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/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/meta-engagement/meta-cost-per-share) | Efficiency of driving shares |
| [Meta Reactions](/reference/metrics/advertising/meta/meta-engagement/meta-reactions) | Emotional engagement complement |
| [Meta Post Comments](/reference/metrics/advertising/meta/meta-engagement/meta-post-comments) | Conversation-driving engagement |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Reactions: Measure Emotional Engagement on Your Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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/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](/reference/metrics/advertising/meta/meta-engagement/meta-cost-per-reaction) | How much you pay per emoji reaction |
| [Meta Likes](/reference/metrics/advertising/meta/meta-engagement/meta-likes) | Thumbs-up reactions, a subset of total reactions |
| [Meta Engagements](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | Broader count including comments, shares, and saves |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Saves: Measure Bookmark Interest
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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/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/meta-engagement/meta-cost-per-save) | How much you pay per save action |
| [Meta Engagements](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | Total interactions including saves, likes, comments, shares |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Shares: Track Ad Virality
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-engagement/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/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/meta-engagement/meta-cost-per-share) | How much you pay per share action |
| [Meta Engagements](/reference/metrics/advertising/meta/meta-engagement/meta-engagements) | Total interactions including shares, likes, comments |
[See all Meta Engagement metrics →](/reference/metrics/advertising/meta/meta-engagement)
# Meta Spend Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-spend/index
Track Meta advertising spend in Upstack. Monitor your Facebook and Instagram ad budget consumption with real-time spend tracking.
Spend metrics track your Meta advertising budget consumption. Monitor how much you're spending across campaigns to manage budgets and calculate efficiency ratios.
**Data Source:** Meta Marketing API\
**Metrics:** 1
## Metrics in This Group
| Metric | Description | When to Use |
| ----------------------------------------------------------------------- | -------------------------------- | -------------------------------------------------------------- |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total ad budget consumed by Meta | Track budget consumption, calculate ROAS and efficiency ratios |
## How Spend Works
Meta Spend represents the actual amount billed by Meta for your advertising. This value is pulled directly from Meta's reporting API and reflects real ad delivery costs including any platform fees.
## Choosing the Right Metric
Meta Spend is the foundation metric for all efficiency calculations. Use it to:
* **Budget tracking**: Monitor daily/weekly spend against targets
* **ROAS calculation**: Divide revenue by spend to measure return
* **CPA analysis**: Divide spend by conversions to measure acquisition cost
* **Channel comparison**: Compare spend efficiency across platforms
# Meta Spend: Track Your Total Ad Budget Consumption
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-spend/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/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/meta-audience/meta-cpm) | Spend divided by impressions × 1,000 |
| [Meta CPC](/reference/metrics/advertising/meta/meta-clicks/meta-cpc) | Spend divided by clicks |
| [Meta ROAS](/reference/metrics/advertising/meta/meta-efficiency/meta-roas) | Revenue divided by spend |
# Meta Video Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/index
Track Meta video ad performance in Upstack. Monitor video views, ThruPlay, completion rates, and cost efficiency for Facebook and Instagram video campaigns.
Video metrics track how people watch your Meta video ads. Monitor view counts, completion rates, and cost efficiency for video content on Facebook and Instagram.
**Data Source:** Meta Marketing API\
**Metrics:** 15
## Metrics in This Group
| Metric | Description | When to Use |
| ----------------------------------------------------------------------------------------------------- | ---------------------------- | ---------------------------------- |
| [Meta Video Views](/reference/metrics/advertising/meta/meta-video/meta-video-views) | 3+ second video views | Measure video engagement threshold |
| [Meta Video Plays](/reference/metrics/advertising/meta/meta-video/meta-video-plays) | Video play starts | Track total play initiations |
| [Meta Video Completions](/reference/metrics/advertising/meta/meta-video/meta-video-completions) | 100% completion | Measure full video engagement |
| [Meta ThruPlay](/reference/metrics/advertising/meta/meta-video/meta-thruplay) | ThruPlay views | Optimize for awareness campaigns |
| [Meta ThruPlay Views](/reference/metrics/advertising/meta/meta-video/meta-thruplay-views) | ThruPlay view count | Track ThruPlay volume |
| [Meta Video Views 15 Sec](/reference/metrics/advertising/meta/meta-video/meta-video-views-15-sec) | 15+ second views | Measure sustained attention |
| [Meta Video Views 25%](/reference/metrics/advertising/meta/meta-video/meta-video-views-25-percent) | 25%+ completion | Track early drop-off |
| [Meta Video Views 50%](/reference/metrics/advertising/meta/meta-video/meta-video-views-50-percent) | 50%+ completion | Measure mid-point retention |
| [Meta Video Views 75%](/reference/metrics/advertising/meta/meta-video/meta-video-views-75-percent) | 75%+ completion | Track near-completion rate |
| [Meta Video Views 100%](/reference/metrics/advertising/meta/meta-video/meta-video-views-100-percent) | 100% completion | Measure full video consumption |
| [Meta Average Watch Time](/reference/metrics/advertising/meta/meta-video/meta-average-watch-time) | Average video watch duration | Compare content engagement |
| [Meta Cost per Video View](/reference/metrics/advertising/meta/meta-video/meta-cost-per-video-view) | Spend ÷ Video views | Evaluate view acquisition cost |
| [Meta Cost per Video Play](/reference/metrics/advertising/meta/meta-video/meta-cost-per-video-play) | Spend ÷ Video plays | Track play initiation cost |
| [Meta Cost per ThruPlay](/reference/metrics/advertising/meta/meta-video/meta-cost-per-thruplay) | Spend ÷ ThruPlay | Optimize ThruPlay efficiency |
| [Meta Cost per 15 Sec View](/reference/metrics/advertising/meta/meta-video/meta-cost-per-15-sec-view) | Spend ÷ 15s views | Measure sustained attention cost |
## How These Metrics Relate
* **Video Plays** counts all play initiations, including auto-plays
* **Video Views** requires 3+ seconds watched (Meta's standard threshold)
* **ThruPlay** counts views that complete OR reach 15 seconds (whichever comes first)
* **Completion metrics** (25%, 50%, 75%, 100%) track viewing depth
ThruPlay is Meta's recommended optimization goal for video awareness campaigns.
## Choosing the Right Metric
* **Awareness campaigns**: Use ThruPlay as your primary optimization metric
* **Content quality**: Compare completion rates (25% → 100%) to identify drop-off points
* **Attention span**: Use Average Watch Time to compare video performance
* **Cost efficiency**: Track Cost per ThruPlay to optimize delivery efficiency
* **Full engagement**: Use Video Completions for videos where the full message matters
# Meta Average Watch Time: Measure Video Engagement Duration
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| **Total Watch Time** | Cumulative seconds spent watching your video ads across all plays |
| [**Meta Video Plays**](/reference/metrics/advertising/meta/meta-video/meta-video-plays) | Total number of times your video ads started playing |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Number (seconds) |
| **Data Source** | [Meta Ads](/sources/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/meta-video/meta-video-plays) | Denominator for average watch time calculation |
| [Meta ThruPlay Views](/reference/metrics/advertising/meta/meta-video/meta-thruplay-views) | Videos watched to completion or 15+ seconds |
| [Meta Video Completions](/reference/metrics/advertising/meta/meta-video/meta-video-completions) | 100% completion views—highest engagement tier |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Cost per 15-Second View: Deep Engagement Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/meta-cost-per-15-sec-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** ÷ **Meta 15-Second Video Views**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount billed by Meta for advertising |
| [**Meta 15-Second Video Views**](/reference/metrics/advertising/meta/meta-video/meta-video-views-15-sec) | Count of video views watched for at least 15 continuous seconds |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-video/meta-video-views-15-sec) | Denominator — the view count used in this cost formula |
| [Meta Cost per Video View](/reference/metrics/advertising/meta/meta-video/meta-cost-per-video-view) | Cost per 3-second view for baseline comparison |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Numerator — the total ad spend used in the formula |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Cost per Thruplay: Video View Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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** ÷ **Meta Thruplay Views**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta ads |
| [**Meta Thruplay Views**](/reference/metrics/advertising/meta/meta-video/meta-thruplay-views) | Videos watched to completion or for at least 15 seconds |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-video/meta-thruplay-views) | Denominator—total Thruplay views generated |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Numerator—total spend divided by Thruplay views |
| [Meta Cost per Video View](/reference/metrics/advertising/meta/meta-video/meta-cost-per-video-view) | Alternative metric—cost per 3-second view (lower threshold) |
| [Meta Video Completions](/reference/metrics/advertising/meta/meta-video/meta-video-completions) | Full completions only (stricter than Thruplay) |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Cost per Video Play: Average Spend per Video Initiation
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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** ÷ **Meta Video Plays**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount spent on Meta advertising campaigns |
| [**Meta Video Plays**](/reference/metrics/advertising/meta/meta-video/meta-video-plays) | Number of times your video started playing, including auto-plays |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-video/meta-video-plays) | Denominator — total video play initiations |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Numerator — total advertising spend |
| [Meta Cost per Video View](/reference/metrics/advertising/meta/meta-video/meta-cost-per-video-view) | Similar metric measuring cost per qualified view |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Cost per Video View: Video Awareness Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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** ÷ **Meta Video Views**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| [**Meta Spend**](/reference/metrics/advertising/meta/meta-spend/meta-spend) | Total amount billed by Meta for your advertising |
| [**Meta Video Views**](/reference/metrics/advertising/meta/meta-video/meta-video-views) | Number of times your video was watched for at least 3 seconds |
| Metadata | |
| --------------- | --------------------------------- |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/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/meta-video/meta-video-views) | The view count used in the Cost per Video View formula |
| [Meta Cost per Thruplay](/reference/metrics/advertising/meta/meta-video/meta-cost-per-thruplay) | Cost for deeper engagement—15+ seconds or completion |
| [Meta Spend](/reference/metrics/advertising/meta/meta-spend/meta-spend) | The total ad spend used in the formula |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Thruplay: Video Completion Measurement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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/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/meta-video/meta-cost-per-thruplay) to evaluate engaged view cost |
| Benchmarking engagement | Compare Thruplay against [Meta Video Views 100%](/reference/metrics/advertising/meta/meta-video/meta-video-views-100-percent) for full completion |
***
## Related Metrics
| Metric | Relationship |
| ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| [Meta Thruplay Views](/reference/metrics/advertising/meta/meta-video/meta-thruplay-views) | Same metric with alternate name |
| [Meta Cost per Thruplay](/reference/metrics/advertising/meta/meta-video/meta-cost-per-thruplay) | Ad Spend ÷ Thruplay Views—efficiency metric for video spend |
| [Meta Video Views 100%](/reference/metrics/advertising/meta/meta-video/meta-video-views-100-percent) | Views where the entire video was watched—stricter completion metric |
| [Meta Video Views 15 Sec](/reference/metrics/advertising/meta/meta-video/meta-video-views-15-sec) | Views reaching 15 seconds—component of Thruplay for longer videos |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Thruplay Views: Video Completion Measurement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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/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/meta-video/meta-thruplay-cost) to evaluate cost per engaged view |
| Benchmarking engagement | Compare Thruplay rate against [Meta 100% Watched](/reference/metrics/advertising/meta/meta-video/meta-video-p100-watched) for full completion insights |
***
## Related Metrics
| Metric | Relationship |
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| [Meta Thruplay Cost](/reference/metrics/advertising/meta/meta-video/meta-thruplay-cost) | Cost per Thruplay View—efficiency metric for video spend |
| [Meta 100% Watched](/reference/metrics/advertising/meta/meta-video/meta-video-p100-watched) | Views where the entire video was watched—stricter completion metric |
| [Meta 15 Second Views](/reference/metrics/advertising/meta/meta-video/meta-video-views-15-sec) | Views reaching 15 seconds—component of Thruplay for longer videos |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Video Completions: Full Video Watch Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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/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/meta-video/meta-thruplay-views) | Completions or 15+ second views—Meta's recommended video optimization metric |
| [Meta Video 75% Views](/reference/metrics/advertising/meta/meta-video/meta-video-views-75-percent) | Near-completions—viewers who watched most of your video |
| [Meta Video Views](/reference/metrics/advertising/meta/meta-video/meta-video-views) | 3-second views—top of the video engagement funnel |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Video Plays: Track Video Starts on Your Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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/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/meta-video/meta-cost-per-video-play) | Ad Spend ÷ Video Plays |
| [Meta Video Views](/reference/metrics/advertising/meta/meta-video/meta-video-views) | Plays that reached the 3-second threshold |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Video Views: Measure Video Ad Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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/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/meta-video/meta-cost-per-video-view) | Spend efficiency—how much each 3-second view costs |
| [Meta Video Plays](/reference/metrics/advertising/meta/meta-video/meta-video-plays) | Total plays including auto-play—always higher than views |
| [Meta Thruplay Views](/reference/metrics/advertising/meta/meta-video/meta-thruplay-views) | Videos watched to completion or 15+ seconds |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Video 100% Views: Complete Video Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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/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](/reference/metrics/advertising/meta/meta-video/meta-video-views-95-percent) | Near-complete views—useful when 100% is too strict |
| [Meta ThruPlay Views](/reference/metrics/advertising/meta/meta-video/meta-video-views-thruplay) | Meta's standard video metric (15s or completion) |
| [Meta Video Views](/reference/metrics/advertising/meta/meta-video/meta-video-views) | 3-second views—top-of-funnel video engagement |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta 15-Second Video Views: Measure Deep Video Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/meta-video-views-15-sec
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/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/meta-video/meta-cost-per-15-sec-view) | Cost efficiency of driving 15-second views |
| [Meta Video Views](/reference/metrics/advertising/meta/meta-video/meta-video-views) | Total 3-second views for baseline comparison |
| [Meta Thruplay Views](/reference/metrics/advertising/meta/meta-video/meta-thruplay-views) | Views watched to completion or 15+ seconds |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Video 25% Views: Track Early Video Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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/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/meta-video/meta-video-views-50-percent) | Next milestone in the video completion funnel |
| [Meta Video Views](/reference/metrics/advertising/meta/meta-video/meta-video-views) | Base 3-second view count—always higher than 25% views |
| [Meta Video Completions](/reference/metrics/advertising/meta/meta-video/meta-video-completions) | Viewers who watched your entire video |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Video 50% Views: Measure Mid-Video Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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/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/meta-video/meta-video-views-25-percent) | Earlier funnel stage showing initial hook effectiveness |
| [Meta Video 75% Views](/reference/metrics/advertising/meta/meta-video/meta-video-views-75-percent) | Next milestone showing strong content retention |
| [Meta Video Completions](/reference/metrics/advertising/meta/meta-video/meta-video-completions) | Viewers who watched your entire video |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# Meta Video 75% Views: Measure Deep Video Engagement
Source: https://docs.upstackdata.com/reference/metrics/advertising/meta/meta-video/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/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/meta-video/meta-video-views-50-percent) | Earlier milestone—compare drop-off between 50% and 75% |
| [Meta Video Completions](/reference/metrics/advertising/meta/meta-video/meta-video-completions) | Final milestone—100% completion for full message delivery |
| [Meta Video 25% Views](/reference/metrics/advertising/meta/meta-video/meta-video-views-25-percent) | Initial hook effectiveness—measures early attention capture |
[See all Meta Video metrics →](/reference/metrics/advertising/meta/meta-video)
# TikTok Ads Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/index
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.
## Metric Categories
| Category | Description | Key Metrics |
| ------------------------------------------------------------------------------ | ----------------------------------------------------- | --------------------------------------------- |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend) | Track your TikTok advertising investment | Ad Spend |
| [TikTok Efficiency](/reference/metrics/advertising/tiktok/tiktok-efficiency) | Measure return on ad spend and cost efficiency | ROAS, CPA |
| [TikTok Audience](/reference/metrics/advertising/tiktok/tiktok-audience) | Understand ad reach and impression costs | Impressions, CPM |
| [TikTok Clicks](/reference/metrics/advertising/tiktok/tiktok-clicks) | Analyze click performance and landing page engagement | Clicks, CPC, CTR, Landing Page Views |
| [TikTok Video](/reference/metrics/advertising/tiktok/tiktok-video) | Track video ad performance and completion rates | Video Views, Watch Time, Completion Rate |
| [TikTok Conversions](/reference/metrics/advertising/tiktok/tiktok-conversions) | Measure conversion actions and their costs | Purchases, Add to Carts, Leads, Registrations |
| [TikTok Engagement](/reference/metrics/advertising/tiktok/tiktok-engagement) | Track social engagement with your ads | Likes, Comments, Shares, Follows |
## 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/tiktok), synchronized daily with your Upstack dashboard.
# TikTok Audience: Reach and Impression Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-audience/index
Track TikTok ad reach metrics including impressions and CPM. Understand how many people see your TikTok ads and the cost to reach them.
Audience metrics measure how many times your TikTok ads are shown and the cost efficiency of reaching your audience.
**Data Source:** [TikTok Ads](/sources/tiktok)\
**Metrics:** 2
## Metrics in This Group
| Metric | Description | When to Use |
| ---------------------------------------------------------------------------------------------- | ---------------------------------- | ------------------------- |
| [TikTok Impressions](/reference/metrics/advertising/tiktok/tiktok-audience/tiktok-impressions) | Number of times ads were displayed | Measure ad exposure |
| [TikTok CPM](/reference/metrics/advertising/tiktok/tiktok-audience/tiktok-cpm) | Cost per 1,000 impressions | Evaluate reach efficiency |
## How These Metrics Relate
* **TikTok Impressions** counts every time your ad appears on screen
* **TikTok CPM** = (TikTok Ad Spend ÷ TikTok Impressions) × 1,000
CPM depends on:
* [TikTok Ad Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) — total cost
* TikTok Impressions — total ad views
## Choosing the Right Metric
* **Awareness campaigns**: Use Impressions to measure total exposure
* **Budget efficiency**: Use CPM to compare cost of reach across campaigns
* **Audience targeting**: Lower CPM with maintained CTR indicates efficient targeting
# TikTok CPM: Cost Per 1,000 Impressions
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-audience/tiktok-cpm
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** ÷ **TikTok Impressions** × 1,000
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------- | -------------------------------------- |
| [**TikTok Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok ads |
| [**TikTok Impressions**](/reference/metrics/advertising/tiktok/tiktok-audience/tiktok-impressions) | Number of times ads appeared on screen |
|| Metadata | |
||---|---|
|| **Type** | Currency |
|| **Data Source** | [TikTok Ads](/sources/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/tiktok-audience/tiktok-impressions) | Denominator in CPM calculation — total ad views |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Numerator in CPM calculation — total cost |
| [TikTok CPC](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-cpc) | Cost per click — efficiency metric for engagement |
| [TikTok CTR](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-ctr) | Click-through rate — measures ad engagement quality |
[See all TikTok Audience metrics →](/reference/metrics/advertising/tiktok/tiktok-audience)
# TikTok Impressions: Ad Views on TikTok
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-audience/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/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/tiktok-audience/tiktok-cpm) | Cost per 1,000 impressions — measures impression efficiency |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total cost to generate these impressions |
| [TikTok CTR](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-ctr) | Percentage of impressions that resulted in clicks |
[See all TikTok Audience metrics →](/reference/metrics/advertising/tiktok/tiktok-audience)
# TikTok Clicks: Click Performance and Landing Page Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-clicks/index
Track TikTok click metrics including clicks, CPC, CTR, and landing page views. Measure ad engagement and traffic generation from TikTok campaigns.
Click metrics measure how users engage with your TikTok ads through clicks and landing page interactions. Use these to evaluate creative performance and traffic generation.
**Data Source:** [TikTok Ads](/sources/tiktok)\
**Metrics:** 6
## Metrics in This Group
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ---------------------------- |
| [TikTok Total Clicks](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-clicks) | Total clicks on ads | Measure overall engagement |
| [TikTok CPC](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-cpc) | Cost per click (Spend ÷ Clicks) | Evaluate click efficiency |
| [TikTok CTR](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-ctr) | Click-through rate (Clicks ÷ Impressions) | Compare creative performance |
| [TikTok Landing Page Views](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-landing-page-views) | Clicks that loaded your landing page | Measure actual site visits |
| [TikTok Cost per LP View](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-landing-page-views-cost) | Cost per landing page view | Evaluate traffic cost |
| [TikTok LP View Rate](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-landing-page-view-rate) | Percentage of clicks that loaded page | Identify landing page issues |
## How These Metrics Relate
Click metrics form a funnel from impressions to site visits:
1. **TikTok Impressions** → Users see your ad
2. **TikTok Total Clicks** → Users click your ad
3. **TikTok Landing Page Views** → Users' browsers load your page
Calculated metrics:
* **TikTok CTR** = Clicks ÷ Impressions × 100
* **TikTok CPC** = Spend ÷ Clicks
* **TikTok LP View Rate** = Landing Page Views ÷ Clicks × 100
## Choosing the Right Metric
* **Engagement analysis**: Use Clicks and CTR to measure ad appeal
* **Traffic campaigns**: Use Landing Page Views for actual site visits
* **Cost analysis**: Use CPC and Cost per LP View to evaluate traffic cost
* **Page performance**: Low LP View Rate indicates slow pages or bounce issues
# TikTok Clicks: Total Clicks on Your TikTok Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-clicks/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/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/tiktok-clicks/tiktok-cpc) | Cost efficiency — spend divided by clicks |
| [TikTok CTR](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-ctr) | Click rate — clicks divided by impressions |
| [TikTok Landing Page Views](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-landing-page-views) | Clicks that fully loaded your page |
[See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok/tiktok-clicks)
# TikTok CPC: Average Cost Per Click on TikTok Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-cpc
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** ÷ **TikTok Clicks**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------- | -------------------------------- |
| [**TikTok Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok ads |
| [**TikTok Clicks**](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-clicks) | Total clicks on your TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-spend/tiktok-spend) | Numerator — total cost of TikTok ads |
| [TikTok Clicks](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-clicks) | Denominator — total clicks received |
| [TikTok CTR](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-ctr) | Click rate — higher CTR often correlates with lower CPC |
[See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok/tiktok-clicks)
# TikTok CTR: Click-Through Rate on TikTok Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-ctr
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** ÷ **TikTok Impressions** ) × 100
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------- | -------------------------------------- |
| [**TikTok Clicks**](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-clicks) | Total clicks on your TikTok ads |
| [**TikTok Impressions**](/reference/metrics/advertising/tiktok/tiktok-audience/tiktok-impressions) | Total times your TikTok ads were shown |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Percentage |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-clicks/tiktok-clicks) | Numerator — total clicks on ads |
| [TikTok Impressions](/reference/metrics/advertising/tiktok/tiktok-audience/tiktok-impressions) | Denominator — total ad views |
| [TikTok CPC](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-cpc) | Cost per click — higher CTR often lowers CPC |
[See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok/tiktok-clicks)
# TikTok Landing Page View Rate: Click-to-Page-Load Conversion
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-clicks/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** ÷ **TikTok Clicks** ) × 100
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| [**TikTok Landing Page Views**](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-landing-page-views) | Total landing page loads from TikTok ads |
| [**TikTok Clicks**](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-clicks) | Total clicks on your TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Percentage |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-clicks/tiktok-landing-page-views) | Numerator — completed page loads |
| [TikTok Clicks](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-clicks) | Denominator — total ad clicks |
| [TikTok Cost per LP View](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-landing-page-views-cost) | Cost efficiency — affected by this rate |
[See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok/tiktok-clicks)
# TikTok Landing Page Views: Completed Page Loads from TikTok Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-clicks/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/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/tiktok-clicks/tiktok-clicks) | Total clicks — LP views should be close to this |
| [TikTok Cost per LP View](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-landing-page-views-cost) | Cost efficiency for actual page loads |
| [TikTok LP View Rate](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-landing-page-view-rate) | Percentage of clicks that loaded the page |
[See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok/tiktok-clicks)
# TikTok Cost per Landing Page View: Cost for Completed Page Loads
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-clicks/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** ÷ **TikTok Landing Page Views**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| [**TikTok Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok ads |
| [**TikTok Landing Page Views**](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-landing-page-views) | Total landing page loads from TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-spend/tiktok-spend) | Numerator — total TikTok ad cost |
| [TikTok Landing Page Views](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-landing-page-views) | Denominator — completed page loads |
| [TikTok CPC](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-cpc) | Cost per click — typically lower than cost per LP view |
[See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok/tiktok-clicks)
# TikTok Conversions: Purchase, Lead, and Event Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/index
Track TikTok conversion metrics including purchases, leads, add-to-carts, checkouts, and app installs. Measure TikTok-attributed actions and their value.
Conversion metrics track actions TikTok attributes to your ads—from product views through purchases, plus lead generation and app installs.
**Data Source:** [TikTok Ads](/sources/tiktok)\
**Metrics:** 29
## Metrics in This Group
### Purchase Funnel
| Metric | Description | When to Use |
| --------------------------------------------------------------------------------------------------------------------------- | -------------------------- | ------------------------ |
| [TikTok View Contents](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-view-contents) | Product page views | Top-of-funnel engagement |
| [TikTok View Contents Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-view-contents-value) | Value of viewed products | Measure interest quality |
| [TikTok Cost per View Content](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-view-contents-cost) | Cost per product view | Traffic efficiency |
| [TikTok Add to Carts](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts) | Cart additions | Mid-funnel intent |
| [TikTok Add to Carts Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts-value) | Value of carted items | Cart quality |
| [TikTok Cost per Add to Cart](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts-cost) | Cost per cart add | Mid-funnel efficiency |
| [TikTok Initiate Checkouts](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-initiate-checkouts) | Checkout starts | Bottom-funnel intent |
| [TikTok Initiate Checkouts Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-initiate-checkouts-value) | Value of checkouts started | Checkout quality |
| [TikTok Cost per Init. Checkout](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-initiate-checkouts-cost) | Cost per checkout start | Checkout efficiency |
| [TikTok Purchases](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases) | Completed purchases | Conversion count |
| [TikTok Purchases Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases-value) | Revenue from purchases | Attributed revenue |
### Lead Generation
| Metric | Description | When to Use |
| -------------------------------------------------------------------------------------------------- | --------------------- | --------------- |
| [TikTok Leads](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-leads) | Lead form submissions | Lead volume |
| [TikTok Leads Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-leads-value) | Value of leads | Lead quality |
| [TikTok Cost per Lead](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-leads-cost) | Cost per lead (CPL) | Lead efficiency |
### User Actions
| Metric | Description | When to Use |
| ----------------------------------------------------------------------------------------------------------------------- | -------------------------- | -------------------- |
| [TikTok Searches](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-searches) | Site searches | Search engagement |
| [TikTok Searches Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-searches-value) | Value of searches | Search intent |
| [TikTok Cost per Search](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-searches-cost) | Cost per search | Search efficiency |
| [TikTok Subscribes](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-subscribes) | Newsletter/service signups | Subscription volume |
| [TikTok Subscribes Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-subscribes-value) | Value of subscriptions | Subscription quality |
| [TikTok Cost per Subscribe](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-subscribes-cost) | Cost per subscription | Subscribe efficiency |
| [TikTok Schedules](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-schedules) | Appointments scheduled | Booking volume |
| [TikTok Schedules Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-schedules-value) | Value of schedules | Booking quality |
| [TikTok Cost per Schedule](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-schedules-cost) | Cost per schedule | Booking efficiency |
| [TikTok Add to Wishlists](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-wishlists) | Wishlist additions | Future intent |
| [TikTok Add to Wishlists Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-wishlists-value) | Value of wishlisted items | Wishlist quality |
| [TikTok Cost per Wishlist Add](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-wishlists-cost) | Cost per wishlist add | Wishlist efficiency |
### App & Registration
| Metric | Description | When to Use |
| --------------------------------------------------------------------------------------------------------------------------- | ---------------------- | ----------------------- |
| [TikTok App Installs](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-app-installs) | Mobile app installs | App acquisition |
| [TikTok Cost per App Install](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-app-installs-cost) | Cost per install (CPI) | App install efficiency |
| [TikTok Completed Registrations](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-complete-registrations) | Account signups | Registration volume |
| [TikTok Completed Reg. Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-complete-registrations-value) | Value of registrations | Registration quality |
| [TikTok Cost per Registration](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-complete-registrations-cost) | Cost per registration | Registration efficiency |
## How These Metrics Relate
Purchase funnel flow:
```
View Contents → Add to Cart → Initiate Checkout → Purchase
```
Each metric has three variants:
* **Count** — Number of events
* **Value** — Monetary value of events
* **Cost** — Spend ÷ Count (efficiency)
## Choosing the Right Metric
* **E-commerce**: Focus on purchase funnel metrics
* **Lead generation**: Use Leads and Cost per Lead (CPL)
* **App campaigns**: Use App Installs and CPI
* **Funnel optimization**: Compare drop-off between funnel stages
# TikTok Add to Carts: Attributed Cart Actions
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-cost-per-add-to-cart) | Cost efficiency of driving cart actions |
| [TikTok Initiate Checkouts](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-initiate-checkouts) | Next step in purchase funnel |
| [TikTok Purchases](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases) | Final conversion event |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Cost per Add to Cart: Measure Purchase Intent Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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** ÷ **TikTok Add to Carts**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on your TikTok ads |
| [**TikTok Add to Carts**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts) | Number of add to cart actions attributed to your TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-conversions/tiktok-add-to-carts) | The denominator—total add to cart events |
| [TikTok CPA](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-cpa) | Cost per purchase—measures full conversion efficiency |
| [TikTok Cost per Initiate Checkout](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-initiate-checkouts-cost) | Next funnel stage—cost per checkout started |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Add to Carts Value: Track Cart Revenue Potential
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-add-to-carts) | Count of add-to-cart events (volume) |
| [TikTok Purchases Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases-value) | Revenue from completed purchases |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Add to Wishlists: Wishlist Intent from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-add-to-wishlists-cost) | Cost per wishlist addition |
| [TikTok Wishlist Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-wishlists-value) | Revenue from wishlisted items |
| [TikTok Add to Carts](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts) | Next step in funnel after wishlisting |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Cost per Add to Wishlist: Wishlist Efficiency Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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** ÷ **TikTok Add to Wishlists**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on your TikTok ads |
| [**TikTok Add to Wishlists**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-wishlists) | Number of wishlist additions attributed to your TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-conversions/tiktok-add-to-wishlists) | The denominator—total wishlist events |
| [TikTok Cost per Add to Cart](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts-cost) | Next funnel stage—cost per cart addition |
| [TikTok CPA](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-cpa) | Cost per purchase—measures full conversion efficiency |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Add to Wishlists Value: Total Wishlist Revenue
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-add-to-wishlists) | Count of wishlist actions generating this value |
| [TikTok Cost per Add to Wishlist](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-wishlists-cost) | Efficiency of driving wishlist actions |
| [TikTok Add to Carts Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts-value) | Next stage in purchase funnel |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok App Installs: Mobile App Downloads from TikTok Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-cost-per-app-install) | Cost efficiency per install |
| [TikTok Completed Registrations](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-completed-registrations) | Post-install signup actions |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total ad budget consumed |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Cost per App Install: CPI for App Campaigns
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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** ÷ **TikTok App Installs**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok advertising |
| [**TikTok App Installs**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-app-installs) | Number of app installs attributed to TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-conversions/tiktok-app-installs) | The denominator for CPI |
| [TikTok CPA](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-cpa) | Cost per purchase (compare to CPI for full-funnel view) |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Complete Registrations: Account Signups from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-complete-registrations-cost) | Spend ÷ Registrations |
| [TikTok Completed Registrations Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-complete-registrations-value) | Total value assigned to registrations |
| [TikTok Leads](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-leads) | Another top-of-funnel conversion event |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Cost per Registration: Ad Efficiency Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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** ÷ **TikTok Complete Registrations**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
| [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok advertising |
| [**TikTok Complete Registrations**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-complete-registrations) | Total registrations attributed to TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-conversions/tiktok-complete-registrations) | The denominator in this calculation |
| [TikTok Cost per Lead](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-leads-cost) | Similar efficiency metric for leads |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | The numerator in this calculation |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Complete Registrations Value: Revenue from Signups
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-complete-registrations) | Count of registrations (this metric sums their values) |
| [TikTok Cost per Registration](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-complete-registrations-cost) | TikTok Spend ÷ Completed Registrations |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Initiate Checkouts: Attributed Checkout Starts
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-conversions) | Completed purchases vs. checkout starts |
| [TikTok Add to Carts](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts) | Earlier funnel stage before checkout |
| [TikTok Conversion Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-conversion-value) | Revenue from completed TikTok-attributed purchases |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Cost per Initiate Checkout: Checkout Acquisition Cost
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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** ÷ **TikTok Initiate Checkouts**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok advertising |
| [**TikTok Initiate Checkouts**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-initiate-checkouts) | Number of checkout starts attributed to TikTok ads |
| Metadata | |
| --------------- | ---------------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-conversions/tiktok-initiate-checkouts) | The checkout count used in this formula |
| [TikTok CPA](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-cpa) | Compare checkout cost to final purchase cost |
| [TikTok Add to Carts Cost](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts-cost) | Earlier funnel stage cost for comparison |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Initiate Checkouts Value: Total Checkout Revenue
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-initiate-checkouts) | Count of checkout initiations (volume) |
| [TikTok Purchases Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases-value) | Completed purchase revenue (downstream) |
| [TikTok Cost per Initiate Checkout](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-initiate-checkouts-cost) | Efficiency of driving checkout value |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Leads: Track Lead Generation from TikTok Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-leads-cost) | Cost efficiency of lead generation |
| [TikTok Leads Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-leads-value) | Total assigned value of leads generated |
| [TikTok Purchases](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases) | Downstream purchase conversions |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Cost per Lead: Lead Generation Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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** ÷ **TikTok Leads**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------- | ---------------------------------------------- |
| [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok advertising |
| [**TikTok Leads**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-leads) | Number of lead events attributed to TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-conversions/tiktok-leads) | Denominator—total leads driving this calculation |
| [TikTok CPA](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-cpa) | Similar efficiency metric for purchases |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Leads Value: Total Revenue from Lead Generation
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-leads) | Count of leads generated (quantity vs. this value) |
| [TikTok Cost per Lead](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-cost-per-lead) | Efficiency metric showing acquisition cost per lead |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Purchases: Track TikTok-Attributed Conversions
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-spend/tiktok-spend) | Total cost of TikTok campaigns generating these purchases |
| [TikTok ROAS](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-roas) | Return on ad spend calculated from purchase revenue |
| [TikTok CPA](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-cpa) | Cost per purchase acquisition |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Purchases Value: Track Ad-Attributed Revenue
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-purchases) | Count of purchases that generated this revenue |
| [TikTok ROAS](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-roas) | Revenue return per dollar spent |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Ad budget used to generate this revenue |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Schedules: Ad-Attributed Appointment Bookings
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-schedules-cost) | Cost efficiency per booking |
| [TikTok Schedules Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-schedules-value) | Revenue value of bookings |
| [TikTok Leads](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-leads) | Alternative lead conversion metric |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Cost per Schedule: Booking Efficiency Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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** ÷ **TikTok Schedules**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok advertising |
| [**TikTok Schedules**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-schedules) | Schedule events attributed to TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-conversions/tiktok-schedules) | The denominator — total booking events |
| [TikTok CPA](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-cpa) | Cost per purchase for comparison |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | The numerator — total ad investment |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Schedules Value: Total Revenue from Schedule Events
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-schedules) | Count of events (this metric sums their values) |
| [TikTok Cost per Schedule](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-cost-per-schedule) | TikTok Spend ÷ Schedules |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Searches: Attributed Search Events
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-searches-cost) | Efficiency of driving search events |
| [TikTok Searches Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-searches-value) | Monetary value of search activity |
| [TikTok Purchases](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases) | Downstream conversion from searches |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Cost per Search: Measure Search Event Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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** ÷ **TikTok Searches**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on your TikTok ads |
| [**TikTok Searches**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-searches) | Number of search events attributed to your TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-conversions/tiktok-searches) | The denominator—total search events |
| [TikTok CPA](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-cpa) | Cost per purchase—measures full conversion efficiency |
| [TikTok Searches Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-searches-value) | Monetary value of search activity |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Searches Value: Total Value from Search Events
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-searches) | Count of search events (this metric sums their values) |
| [TikTok Cost per Search](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-searches-cost) | Ad Spend ÷ Searches—measure efficiency |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Subscribes: Attributed Subscription Events
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-subscribes-cost) | Efficiency of driving subscribe events |
| [TikTok Subscribes Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-subscribes-value) | Monetary value of subscription activity |
| [TikTok Purchases](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases) | Downstream conversion from subscribers |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Cost per Subscribe: Subscription Campaign Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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** ÷ **TikTok Subscribes**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok advertising |
| [**TikTok Subscribes**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-subscribes) | Number of subscribe events attributed to TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-conversions/tiktok-subscribes) | Denominator—total subscribes driving this calculation |
| [TikTok CPA](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-cpa) | Similar efficiency metric for purchase conversions |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Subscribes Value: Track Subscription Revenue from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-subscribes) | Count of subscribe events that generated this value |
| [TikTok Cost per Subscribe](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-subscribes-cost) | Average spend per subscribe event |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok View Contents: Product Page Views from Ads
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/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/tiktok-conversions/tiktok-view-contents-cost) | Cost efficiency of driving product views |
| [TikTok Add to Carts](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts) | Next step in the funnel after viewing |
| [TikTok Purchases](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases) | Final conversion from the funnel |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Cost per View Content: Top-of-Funnel Traffic Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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** ÷ **TikTok View Contents**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
| [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok advertising |
| [**TikTok View Contents**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-view-contents) | Product page views attributed to TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-conversions/tiktok-view-contents) | Denominator; total product page views |
| [TikTok Cost per Add to Cart](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts-cost) | Next funnel stage efficiency metric |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok View Contents Value: Product View Revenue Tracking
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-conversions/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/tiktok-conversions/tiktok-view-contents) | Catalog price of each product viewed, attributed to TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-conversions/tiktok-view-contents) | Count of product views (pair with value for avg view value) |
| [TikTok Add to Carts Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-add-to-carts-value) | Next funnel stage—value of items added to cart |
[See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok/tiktok-conversions)
# TikTok Efficiency: ROAS and CPA Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-efficiency/index
Track TikTok advertising efficiency with ROAS and CPA metrics. Measure return on ad spend and cost per acquisition for TikTok campaigns.
Efficiency metrics measure the effectiveness of your TikTok ad spend—how much revenue you generate per dollar spent and how much each conversion costs.
**Data Source:** [TikTok Ads](/sources/tiktok)\
**Metrics:** 2
## Metrics in This Group
| Metric | Description | When to Use |
| ---------------------------------------------------------------------------------- | -------------------------------------------------- | ------------------------------ |
| [TikTok ROAS](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-roas) | Revenue per dollar spent (Purchases Value ÷ Spend) | Measure campaign profitability |
| [TikTok CPA](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-cpa) | Cost per purchase (Spend ÷ Purchases) | Evaluate acquisition cost |
## How These Metrics Relate
ROAS and CPA are inverse efficiency measures:
* **TikTok ROAS** tells you how much revenue you earn per dollar spent (higher is better)
* **TikTok CPA** tells you how much you spend per conversion (lower is better)
Both depend on:
* [TikTok Ad Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) — your investment
* [TikTok Purchases](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases) — conversions attributed
* [TikTok Purchases Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases-value) — revenue attributed
## Choosing the Right Metric
* **Revenue-focused analysis**: Use ROAS to measure dollar-for-dollar return
* **Cost control**: Use CPA to track acquisition costs against targets
* **Campaign optimization**: Compare both across ad sets to find efficient performers
# TikTok CPA: Cost Per Acquisition
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-cpa
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** ÷ **TikTok Purchases**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| [**TikTok Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok ads |
| [**TikTok Purchases**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases) | Number of purchases TikTok attributes to your ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-efficiency/tiktok-roas) | Revenue efficiency counterpart to cost efficiency |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Numerator in CPA calculation |
| [TikTok Purchases](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases) | Denominator in CPA calculation |
| [TikTok Purchases Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases-value) | Revenue generated from TikTok purchases |
[See all TikTok Efficiency metrics →](/reference/metrics/advertising/tiktok/tiktok-efficiency)
# TikTok ROAS: Return on Ad Spend
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-roas
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** ÷ **TikTok Spend**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| [**TikTok Purchases Value**](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases-value) | Total revenue from purchases TikTok attributes to your ads |
| [**TikTok Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok ads |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Multiplier |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-efficiency/tiktok-cpa) | Cost efficiency counterpart to revenue efficiency |
| [TikTok Purchases Value](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases-value) | Numerator in ROAS calculation |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Denominator in ROAS calculation |
| [TikTok Purchases](/reference/metrics/advertising/tiktok/tiktok-conversions/tiktok-purchases) | Conversion count driving purchases value |
[See all TikTok Efficiency metrics →](/reference/metrics/advertising/tiktok/tiktok-efficiency)
# TikTok Engagement: Social Interaction and Community Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-engagement/index
Track TikTok engagement metrics including follows, likes, comments, shares, and profile visits. Measure community growth and social engagement from TikTok campaigns.
Engagement metrics measure how users interact with your TikTok ads through social actions like follows, likes, comments, and shares. Use these to evaluate brand awareness campaigns and community growth.
**Data Source:** [TikTok Ads](/sources/tiktok)\
**Metrics:** 11
## Metrics in This Group
| Metric | Description | When to Use |
| ------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ---------------------------------------- |
| [TikTok Follows](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-follows) | New followers from ads | Measure community growth |
| [TikTok Cost per Follow](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-follows-cost) | Cost per new follower | Evaluate follower acquisition efficiency |
| [TikTok Profile Visits](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-profile-visits) | Profile page visits from ads | Measure brand interest |
| [TikTok Cost per Profile Visit](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-profile-visits-cost) | Cost per profile visit | Evaluate profile traffic cost |
| [TikTok Engagements](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-engagements) | Total social interactions | Measure overall engagement |
| [TikTok Cost per Engagement](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-engagements-cost) | Cost per engagement | Evaluate engagement efficiency |
| [TikTok Engagement Rate](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-engagement-rate) | Engagements ÷ Impressions | Compare creative performance |
| [TikTok Likes](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-likes) | Likes on ads | Measure positive sentiment |
| [TikTok Comments](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-comments) | Comments on ads | Measure conversation |
| [TikTok Shares](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-shares) | Shares of ads | Measure organic reach |
## How These Metrics Relate
Engagement metrics form a hierarchy of user investment:
1. **TikTok Impressions** → Users see your ad
2. **TikTok Engagements** → Users interact (like, comment, share)
3. **TikTok Profile Visits** → Users visit your profile
4. **TikTok Follows** → Users join your community
Calculated metrics:
* **TikTok Engagement Rate** = Engagements ÷ Impressions × 100
* **TikTok Cost per Follow** = Spend ÷ Follows
* **TikTok Cost per Engagement** = Spend ÷ Engagements
## Choosing the Right Metric
* **Community growth**: Use Follows and Cost per Follow for follower campaigns
* **Brand awareness**: Use Engagements and Engagement Rate for resonance
* **Organic amplification**: Use Shares to measure viral potential
* **Sentiment analysis**: Use Likes and Comments for audience feedback
# TikTok Comments: Ad Engagement Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-engagement/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/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/tiktok-engagement/tiktok-engagements) | Total of all engagement types (includes comments) |
| [TikTok Likes](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-likes) | Lighter engagement signal than comments |
| [TikTok Shares](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-shares) | Indicates content worth spreading |
[See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok/tiktok-engagement)
# TikTok Engagement Rate: Measure Content Resonance
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-engagement/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** ÷ **TikTok Impressions** ) × 100
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| [**TikTok Engagements**](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-engagements) | Total interactions including likes, comments, shares, and clicks |
| [**TikTok Impressions**](/reference/metrics/advertising/tiktok/tiktok-audience/tiktok-impressions) | Number of times your ads were displayed |
|| Metadata | |
||---|---|
|| **Type** | Percentage |
|| **Data Source** | [TikTok Ads](/sources/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/tiktok-engagement/tiktok-engagements) | Numerator in this calculation |
| [TikTok Impressions](/reference/metrics/advertising/tiktok/tiktok-audience/tiktok-impressions) | Denominator in this calculation |
| [TikTok Cost per Engagement](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-engagements-cost) | How much you pay for each engagement |
[See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok/tiktok-engagement)
# TikTok Engagements: Total Ad Interactions
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-engagement/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/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/tiktok-engagement/tiktok-engagements-cost) | Cost efficiency of generating engagements |
| [TikTok Engagement Rate](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-engagement-rate) | Engagements as percentage of impressions |
| [TikTok Likes](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-likes) | Subset: positive reactions only |
| [TikTok Shares](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-shares) | Subset: viral distribution actions |
[See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok/tiktok-engagement)
# TikTok Cost per Engagement: Ad Efficiency Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-engagement/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** ÷ **TikTok Engagements**
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| [**TikTok Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok ads |
| [**TikTok Engagements**](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-engagements) | Total likes, comments, shares, and follows on ads |
|| Metadata | |
||---|---|
|| **Type** | Currency |
|| **Data Source** | [TikTok Ads](/sources/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/tiktok-engagement/tiktok-engagements) | Denominator in this calculation |
| [TikTok Engagement Rate](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-engagement-rate) | Measures engagement as percentage of impressions |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Numerator in this calculation |
[See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok/tiktok-engagement)
# TikTok Follows: Follower Acquisition Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-engagement/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/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/tiktok-engagement/tiktok-follows-cost) | Cost efficiency of follower acquisition |
| [TikTok Engagements](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-engagements) | Total of all engagement types (includes follows) |
| [TikTok Profile Visits](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-profile-visits) | Users who visited your profile (may or may not follow) |
[See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok/tiktok-engagement)
# TikTok Cost per Follow: Follower Acquisition Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-engagement/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** ÷ **TikTok Follows**
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------------------------------- | ---------------------------------------------- |
| [**TikTok Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok ads |
| [**TikTok Follows**](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-follows) | Number of new followers gained from TikTok ads |
|| Metadata | |
||---|---|
|| **Type** | Currency |
|| **Data Source** | [TikTok Ads](/sources/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/tiktok-engagement/tiktok-follows) | Denominator in this calculation |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Numerator in this calculation |
| [TikTok Cost per Engagement](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-engagements-cost) | Broader engagement cost metric |
[See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok/tiktok-engagement)
# TikTok Likes: Ad Engagement Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-engagement/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/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/tiktok-engagement/tiktok-engagements) | Total of all engagement types (includes likes) |
| [TikTok Comments](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-comments) | Deeper engagement signal than likes |
| [TikTok Shares](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-shares) | Highest engagement signal; extends organic reach |
[See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok/tiktok-engagement)
# TikTok Profile Visits: Profile Traffic Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-engagement/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/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/tiktok-engagement/tiktok-profile-visits-cost) | Cost efficiency of driving profile traffic |
| [TikTok Follows](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-follows) | Users who followed after visiting profile |
| [TikTok Engagements](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-engagements) | Total of all engagement types |
[See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok/tiktok-engagement)
# TikTok Cost per Profile Visit: Profile Traffic Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-engagement/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** ÷ **TikTok Profile Visits**
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [**TikTok Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok ads |
| [**TikTok Profile Visits**](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-profile-visits) | Number of users who visited your TikTok profile from ads |
|| Metadata | |
||---|---|
|| **Type** | Currency |
|| **Data Source** | [TikTok Ads](/sources/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/tiktok-engagement/tiktok-profile-visits) | Denominator in this calculation |
| [TikTok Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Numerator in this calculation |
| [TikTok Cost per Follow](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-follows-cost) | Related efficiency metric for follower acquisition |
[See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok/tiktok-engagement)
# TikTok Shares: Ad Engagement Metric
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-engagement/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/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/tiktok-engagement/tiktok-engagements) | Total of all engagement types (includes shares) |
| [TikTok Likes](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-likes) | Lighter engagement signal than shares |
| [TikTok Comments](/reference/metrics/advertising/tiktok/tiktok-engagement/tiktok-comments) | Indicates audience discussion and interest |
[See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok/tiktok-engagement)
# TikTok Spend: Ad Budget and Cost Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-spend/index
Track TikTok ad spend metrics in Upstack. Monitor your TikTok Ads budget consumption and understand how your advertising dollars are allocated.
Spend metrics track how much you're investing in TikTok advertising. Use these to monitor budget consumption and compare costs across campaigns.
**Data Source:** [TikTok Ads](/sources/tiktok)\
**Metrics:** 1
## Metrics in This Group
| Metric | Description | When to Use |
| ---------------------------------------------------------------------------------- | -------------------------------- | ------------------------ |
| [TikTok Ad Spend](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok ads | Track budget consumption |
## How These Metrics Relate
TikTok Ad Spend is the foundation metric for all efficiency calculations:
* **TikTok ROAS** = TikTok Purchases Value ÷ TikTok Ad Spend
* **TikTok CPA** = TikTok Ad Spend ÷ TikTok Purchases
* **TikTok CPC** = TikTok Ad Spend ÷ TikTok Clicks
* **TikTok CPM** = TikTok Ad Spend ÷ TikTok Impressions × 1,000
## Choosing the Right Metric
* **Budget tracking**: Use TikTok Ad Spend to monitor how much TikTok has billed you
* **Efficiency analysis**: Combine with [TikTok Efficiency](/reference/metrics/advertising/tiktok/tiktok-efficiency) metrics (ROAS, CPA)
* **Cost comparison**: Compare spend across campaigns to identify budget allocation
# TikTok Spend: Total Advertising Investment
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-spend/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/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/tiktok-audience/tiktok-cpm) | Cost per thousand impressions—efficiency of reach |
| [TikTok CPC](/reference/metrics/advertising/tiktok/tiktok-clicks/tiktok-cpc) | Cost per click—traffic efficiency |
| [TikTok ROAS](/reference/metrics/advertising/tiktok/tiktok-efficiency/tiktok-roas) | Revenue generated per dollar spent |
[See all TikTok Spend metrics →](/reference/metrics/advertising/tiktok/tiktok-spend)
# TikTok Video: Video Engagement and Completion Metrics
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-video/index
Track TikTok video ad performance with plays, views, completion rates, and costs. Measure video engagement at every stage of viewer retention.
Video metrics measure how users watch your TikTok video ads—from initial plays to full completions. Use these to optimize video creative and understand viewer retention.
**Data Source:** [TikTok Ads](/sources/tiktok)\
**Metrics:** 9
## Metrics in This Group
| Metric | Description | When to Use |
| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------- | -------------------------- |
| [TikTok Video Plays](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-plays) | Total video starts (including auto-play) | Measure video exposure |
| [TikTok Video Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views) | Views of at least 6 seconds | Standard view metric |
| [TikTok Cost per Video View](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-cost) | Cost per 6-second view | Evaluate view efficiency |
| [TikTok 15s Video Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-15s) | Views of at least 15 seconds | Measure engaged views |
| [TikTok Cost per 15s View](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-15s-cost) | Cost per 15-second view | Evaluate engaged view cost |
| [TikTok Video 25% Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-p25-watched) | Views to 25% completion | Early retention metric |
| [TikTok Video 50% Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-p50-watched) | Views to 50% completion | Mid-video retention |
| [TikTok Video 75% Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-p75-watched) | Views to 75% completion | Strong retention metric |
| [TikTok Video Completions](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-completions) | Views to 100% completion | Full video engagement |
## How These Metrics Relate
Video metrics form a retention funnel:
```
Video Plays → Video Views (6s) → 25% → 50% → 75% → 100% Completion
```
* **Video Plays** > **Video Views** because plays include very short watches
* Each completion tier is a subset of the previous
* Drop-off between tiers reveals where viewers lose interest
## Choosing the Right Metric
* **Awareness campaigns**: Use Video Views (6s) as the standard metric
* **Engagement optimization**: Compare 25%/50%/75%/100% completion rates
* **Creative testing**: High plays but low completions suggest hook issues
* **Cost analysis**: Use Cost per View metrics to compare efficiency
# TikTok Video Completions: 100% Watched
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-video/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/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/tiktok-video/tiktok-video-p75-watched) | Previous stage in the completion funnel |
| [TikTok Video Plays](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-plays) | Starting point for calculating overall completion rate |
| [TikTok Video Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views) | 6-second views for comparison |
[See all TikTok Video metrics →](/reference/metrics/advertising/tiktok/tiktok-video)
# TikTok Video 25% Completion Views: Quarter Watched
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-p25-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/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/tiktok-video/tiktok-video-plays) | Starting point for the completion funnel |
| [TikTok Video 50% Completion Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-p50-watched) | Next stage in the completion funnel |
| [TikTok Video Completions](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-completions) | Final stage — 100% completion |
[See all TikTok Video metrics →](/reference/metrics/advertising/tiktok/tiktok-video)
# TikTok Video 50% Completion Views: Half Watched
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-p50-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/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/tiktok-video/tiktok-video-p25-watched) | Previous stage in the completion funnel |
| [TikTok Video 75% Completion Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-p75-watched) | Next stage in the completion funnel |
| [TikTok Video Completions](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-completions) | Final stage — 100% completion |
[See all TikTok Video metrics →](/reference/metrics/advertising/tiktok/tiktok-video)
# TikTok Video 75% Completion Views: Three-Quarters Watched
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-p75-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/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/tiktok-video/tiktok-video-p50-watched) | Previous stage in the completion funnel |
| [TikTok Video Completions](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-completions) | Final stage — 100% completion |
| [TikTok Video 25% Completion Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-p25-watched) | First stage of the completion funnel |
[See all TikTok Video metrics →](/reference/metrics/advertising/tiktok/tiktok-video)
# TikTok Video Plays: Total Video Start Count
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-video/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/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/tiktok-video/tiktok-video-views) | Views that pass the 6-second threshold |
| [TikTok Video Completions](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-completions) | Users who watched the entire video |
| [TikTok Impressions](/reference/metrics/advertising/tiktok/tiktok-delivery/tiktok-impressions) | Total times ads were shown |
[See all TikTok Video metrics →](/reference/metrics/advertising/tiktok/tiktok-video)
# TikTok Video Views: 6-Second View Count
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-video/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/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/tiktok-video/tiktok-video-plays) | Total starts including sub-6s watches |
| [TikTok Cost per Video View](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-cost) | Efficiency metric for video views |
| [TikTok 15-Second Video Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-15s) | Deeper engagement metric (15s threshold) |
[See all TikTok Video metrics →](/reference/metrics/advertising/tiktok/tiktok-video)
# TikTok 15-Second Video Views: Extended View Count
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-15s
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/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/tiktok-video/tiktok-video-views) | Standard 6-second view count |
| [TikTok Cost per 15-Second Video View](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-15s-cost) | Efficiency metric for 15s views |
| [TikTok Video 25% Completion Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-p25-watched) | Percentage-based completion metric |
[See all TikTok Video metrics →](/reference/metrics/advertising/tiktok/tiktok-video)
# TikTok Cost per 15-Second Video View: Extended CPV
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-15s-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** ÷ **TikTok 15s Video Views**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [**TikTok Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok ads |
| [**TikTok 15s Video Views**](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-15s) | Video views that reached the 15-second threshold |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-spend/tiktok-spend) | Numerator in the calculation |
| [TikTok 15-Second Video Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-15s) | Denominator in the calculation |
| [TikTok Cost per Video View](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-cost) | Standard 6-second CPV for comparison |
[See all TikTok Video metrics →](/reference/metrics/advertising/tiktok/tiktok-video)
# TikTok Cost per Video View: CPV Efficiency
Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok/tiktok-video/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** ÷ **TikTok Video Views**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| [**TikTok Spend**](/reference/metrics/advertising/tiktok/tiktok-spend/tiktok-spend) | Total amount spent on TikTok ads |
| [**TikTok Video Views**](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views) | Video views that reached the 6-second threshold |
| Metadata | |
| --------------- | ----------------------------- |
| **Type** | Currency |
| **Data Source** | [TikTok Ads](/sources/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/tiktok-spend/tiktok-spend) | Numerator in the CPV calculation |
| [TikTok Video Views](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views) | Denominator in the CPV calculation |
| [TikTok Cost per 15-Second Video View](/reference/metrics/advertising/tiktok/tiktok-video/tiktok-video-views-15s-cost) | CPV for deeper engagement threshold |
[See all TikTok Video metrics →](/reference/metrics/advertising/tiktok/tiktok-video)
# 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** ÷ **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/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/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/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/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/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/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/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** × 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/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/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/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/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)
# Event Match Quality: Meta CAPI Performance Metrics
Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/index
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/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** is the primary health indicator—a 0-10 rating from Meta
* **Event Coverage** and **Match Key Coverage** measure how complete your customer identifiers are (email, phone, etc.)
* **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** and **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
# 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** × 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/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/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/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/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/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)
# Data Quality Metrics: Monitor Event Match Quality and Tracking Health
Source: https://docs.upstackdata.com/reference/metrics/data-quality/index
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 |
# 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/blended-spend) ÷ [**Page Views**](/reference/metrics/funnel/awareness/page-views)
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend/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)
# Awareness Metrics: Visitor Traffic & Acquisition for E-commerce
Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/index
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:** 9
## Metrics in This Group
| 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** = New Visitors ÷ Unique Visitors × 100
* **Bounce Rate** = Bounced Sessions ÷ Unique Sessions × 100 (measures engagement quality)
Cost and value metrics help you understand efficiency:
* **Cost per Page View** = Ad Spend ÷ Page Views
* **Cost per Session** = Ad Spend ÷ 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
# 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)
# 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 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)
# 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/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)
# 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/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)
# Conversions: Attributed Conversion Events
Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/conversions
Track attributed conversion events from Meta, Google, and TikTok campaigns. Learn the formula, see channel breakdowns, and optimize your conversion rate.
The total number of conversion events attributed to your marketing touchpoints.
## Formula
**Conversions** = **COUNT** ( Attributed Purchase Events )
### Formula Components
| Metric | Definition |
| ------------------------------ | --------------------------------------------------------------------------- |
| **COUNT** | Aggregation function that counts each conversion event |
| **Attributed Purchase Events** | Purchase events linked to a marketing touchpoint via your attribution model |
| Metadata | |
| --------------- | ---------------------------------------------------- |
| **Type** | Number |
| **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/shopify) |
| **Aggregation** | Count |
***
## Example
Your campaigns generated **1,447 conversions** this month:
| Channel | Conversions | Share |
| ---------- | ----------- | ----- |
| Meta Ads | 847 | 58% |
| Google Ads | 312 | 22% |
| TikTok Ads | 288 | 20% |
***
## How It Works
Upstack attributes conversions to marketing touchpoints using your configured attribution model and window. A single customer can generate multiple conversions if they purchase more than once within the attribution window.
***
## When to Use
| Scenario | Action |
| ---------------------- | -------------------------------------------------------- |
| Conversions increasing | Scale budget on top-performing campaigns |
| Conversions dropping | Check ad delivery, landing pages, or tracking setup |
| Comparing channels | Identify which platforms drive the most conversions |
| Optimizing campaigns | Use as the primary goal for conversion-focused campaigns |
***
## Related Metrics
| Metric | Relationship |
| ------------------------------------------------------------------------------------------ | --------------------------------------------------------------- |
| [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue from these conversions |
| [Unique Converters](/reference/metrics/funnel/conversions/unique-converters) | Distinct people (Conversions ÷ Unique Converters = repeat rate) |
| [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Conversion Value ÷ Conversions |
[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** ÷ **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 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** ÷ **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)
# Attributed Conversions: Revenue Attribution Metrics
Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/index
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:** 13
## Metrics in This Group
| 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** = Conversion Value ÷ Conversions
* **Session Conversion Rate** = Purchases ÷ Sessions × 100
* **Cost per All Purchase** = Channel Spend ÷ All Purchases
* **Cost per Purchase** = Channel Spend ÷ Purchase Events
* **Checkout Rate** = Initiate Checkouts ÷ Sessions × 100
* **Repeat Purchase Rate** = Returning Customer Purchases ÷ Total 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
# 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)
# 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/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)
# 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** ÷ **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)
# 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/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)
# 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/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)
# 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** ÷ **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](/reference/metrics/funnel/engagement/cart-abandonment-rate) | Percentage of cart value lost |
[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** ÷ **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](/reference/metrics/funnel/engagement/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** ÷ **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**
### 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** ÷ **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 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)
# 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** ÷ **Add to Carts**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend/channel-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/channel-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 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/channel-spend) ÷ [**Initiate Checkouts**](/reference/metrics/funnel/engagement/initiate-checkouts)
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------- | ------------------------------------------- |
| [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend/channel-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/channel-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 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/channel-spend) ÷ [**View Contents**](/reference/metrics/funnel/engagement/view-contents)
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------- | ------------------------------------------- |
| [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend/channel-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/channel-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)
# Engagement Metrics: Shopping Behavior & Funnel Progression
Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/index
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:** 22
## Metrics in This Group
### 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
# 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/conversion/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-cart-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)
# 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** ÷ **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)
# 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)
# 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-ups) | Count of sign up events (volume) |
| [Cost per Sign Up](/reference/metrics/funnel/engagement/sign-up-cost) | Acquisition cost for each sign up |
| [Lead Value](/reference/metrics/funnel/engagement/lead-value) | Value of lead generation events |
| [Complete Registration Value](/reference/metrics/funnel/engagement/complete-registration-value) | Value of completed registrations |
[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/conversion/purchases) | Conversion events included in total |
[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** ÷ **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 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** ÷ **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)
# Funnel Metrics: Track Conversions and Customer Journey
Source: https://docs.upstackdata.com/reference/metrics/funnel/index
Track attributed conversions and customer journey progression in Upstack. View 5 funnel metrics including Conversions, Conversion Value, Session Conversion Rate, and Unique Converters.
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:** 5
## Subcategories
### Attributed Conversions
Track attributed conversion events and their monetary value across your marketing channels. These are cross-channel funnel metrics distinct from platform-reported conversions (like Meta Conversions).
→ [View Attributed Conversion Metrics](/reference/metrics/funnel/conversions)
## All 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
# Metrics Reference
Source: https://docs.upstackdata.com/reference/metrics/index
Complete reference for 846 Upstack metrics. Formulas, examples, and best practices for attribution, revenue, advertising, website events, and data quality.
Upstack tracks 846 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
**4 metrics** — Attributed conversions and customer journey progression.
**305 metrics** — Spend, ROAS, CPA across Meta, Google, TikTok, and Blended.
**268 metrics** — Orders, revenue, AOV, and profitability. *(coming soon)*
**253 metrics** — Page views, sessions, and tracked events. *(coming soon)*
**16 metrics** — Event match quality and tracking health.
## Category Overview
| Category | Metrics | Status | Data Source |
| ----------------------------------------------- | ------- | -------------- | ----------------------- |
| [Funnel](/reference/metrics/funnel) | 4 | ✅ Available | Upstack Pixel + Shopify |
| [Advertising](/reference/metrics/advertising) | 305 | ✅ Available | Ad Platforms |
| Revenue & Orders | 268 | 🔜 Coming soon | Shopify |
| Website Events | 253 | 🔜 Coming soon | Upstack Pixel |
| [Data Quality](/reference/metrics/data-quality) | 16 | ✅ Available | Upstack Pixel |
### Advertising Platform Breakdown
| Platform | Metrics | Status |
| ----------------------------------------------- | ------- | -------------- |
| [Meta Ads](/reference/metrics/advertising/meta) | 112 | ✅ Available |
| Google Ads | 22 | 🔜 Coming soon |
| TikTok Ads | 61 | 🔜 Coming soon |
| Blended | 110 | 🔜 Coming soon |
## 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/meta-efficiency/meta-roas) and [Meta CPA](/reference/metrics/advertising/meta/meta-efficiency/meta-cpa).
Go directly to **[Advertising Metrics](/reference/metrics/advertising)** → **[Meta Efficiency](/reference/metrics/advertising/meta/meta-efficiency)**. Key metrics include ROAS, CPA, and cost-per-purchase.
Compare with **[Meta Spend](/reference/metrics/advertising/meta/meta-spend)** to understand budget consumption.
Start with **[Meta Audience](/reference/metrics/advertising/meta/meta-audience)**—Reach, Impressions, Frequency, and CPM help you understand who you're reaching and at what cost.
See **[Meta Clicks](/reference/metrics/advertising/meta/meta-clicks)** 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
# 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/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 ) **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/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/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 ) **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/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/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/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/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)
# Adjustments: Track Refunds, Discounts, Shipping, and Tax
Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/index
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/shopify)\
**Metrics:** 51
## Metrics in This Group
### 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 - Discounts - Refunds
* **Total Revenue** = Net Revenue + Shipping + 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
# 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/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 ) **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/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/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/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/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/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/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 ) **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/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/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/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/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/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 ) **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/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/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/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 ) **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/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/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/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/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/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/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/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/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/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/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/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/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/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 ) **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/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/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/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/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/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 ) **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/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 ) **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/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** ÷ **Returning Customer Order Count**
### 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/returning-customer-orders) | Total orders from returning customers |
| Metadata | |
| --------------- | --------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/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** ÷ **Returning Customer Order Count** × 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/returning-customer-orders) | Total returning customer orders |
| Metadata | |
| --------------- | --------------------------- |
| **Type** | Percentage |
| **Data Source** | [Shopify](/sources/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** + **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/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 ) **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/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/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** ÷ **Returning Customer Order Count**
### 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/returning-customer-orders) | Number of orders from customers with prior purchases |
| Metadata | |
| --------------- | --------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/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** ÷ **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/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-amount) | 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/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** ÷ **Returning Customer Order Count**
### 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/returning-customer-orders) | Total orders placed by returning customers |
| Metadata | |
| --------------- | --------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/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** ÷ **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/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** ÷ **Total 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/total-orders) | Total number of orders placed in the selected period |
| Metadata | |
| --------------- | --------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/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/total-orders) | Denominator — order count for averaging |
| [Average Order Value](/reference/metrics/orders/revenue/average-order-value) | 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** ÷ **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/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/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/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** ÷ **Total 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/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** ÷ **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/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)
# 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/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)
# Average Order Value: Track AOV by Revenue Type
Source: https://docs.upstackdata.com/reference/metrics/orders/aov/index
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/shopify)\
**Metrics:** 9
## Metrics in This Group
| 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 ÷ Orders
* **Gross AOV** = Gross Revenue ÷ Orders
* **Net AOV** = Net Revenue ÷ 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
# 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/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/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/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/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/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/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/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)
# 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/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)
# COGS: Cost of Goods Sold for All Orders
Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/cogs
Track your total cost of goods sold from Shopify orders. Use COGS to calculate gross profit, gross margin, and product-level profitability.
The total cost of products sold, including manufacturing or purchase costs.
## Formula
**COGS** = **SUM** ( Product Cost × Quantity )
### Formula Components
| Metric | Definition |
| ---------------- | --------------------------------------- |
| **Product Cost** | Cost per unit from Shopify variant data |
| **Quantity** | Number of units sold per line item |
| Metadata | |
| --------------- | ----------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/shopify), [Upstack Costs](/dashboard/settings/costs) |
| **Aggregation** | Sum |
***
## Example
Your store sold **\$125,000** in January with **\$47,500** in product costs:
| Metric | Value |
| ------------ | --------- |
| Net Revenue | \$125,000 |
| COGS | \$47,500 |
| Gross Profit | \$77,500 |
| Gross Margin | 62% |
***
## How It Works
COGS sums the cost-per-item values from your Shopify product variants multiplied by units sold. If product costs aren't set in Shopify, those items contribute \$0 to COGS. You can also override COGS in Upstack Cost Settings (e.g., "10% of net revenue").
***
## When to Use
| Scenario | Action |
| ------------------------ | ------------------------------------------- |
| Calculating gross profit | Subtract COGS from Net Revenue |
| Setting pricing | Ensure prices cover COGS plus target margin |
| Comparing product lines | Identify high-cost vs low-cost products |
| Evaluating suppliers | Track cost changes over time |
***
## Related Metrics
| Metric | Relationship |
| --------------------------------------------------------------------------------- | ----------------------------------- |
| [COGS Per Order](/reference/metrics/orders/cogs/cogs-per-order) | Average product cost per order |
| [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) | COGS from first-time buyers only |
| [Returning Customer COGS](/reference/metrics/orders/cogs/returning-customer-cogs) | COGS from repeat buyers only |
| [Gross Profit](/reference/metrics/orders/contribution-margin/gross-profit) | Net Revenue minus COGS |
| [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue used in margin calculations |
[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/shopify), [Upstack Costs](/dashboard/settings/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/shopify), [Upstack Costs](/dashboard/settings/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/total-orders)
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------- | --------------------------- |
| [**COGS**](/reference/metrics/orders/cogs/cogs) | Total cost of products sold |
| [**Total Orders**](/reference/metrics/orders/counts/total-orders) | Number of orders placed |
| Metadata | |
| --------------- | ----------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/shopify), [Upstack Costs](/dashboard/settings/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/total-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)
# Cost of Goods Sold: Track Product and Variable Costs
Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/index
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/shopify)\
**Metrics:** 22
## Metrics in This Group
| 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 - COGS
* **COGS Rate** = COGS ÷ Revenue (inverse of gross margin)
* **Variable Costs** include COGS + fulfillment + transaction costs
* **CM1** = Revenue - 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
# 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/shopify), [Upstack Costs](/dashboard/settings/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/shopify), [Upstack Costs](/dashboard/settings/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/shopify), [Upstack Costs](/dashboard/settings/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/new-customer-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/new-customer-orders) | Number of orders from first-time buyers |
| Metadata | |
| --------------- | ----------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/shopify), [Upstack Costs](/dashboard/settings/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/new-customer-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](/dashboard/settings/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)
# 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](/dashboard/settings/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](/dashboard/settings/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/total-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/total-orders) | Number of orders placed |
| Metadata | |
| --------------- | ------------------------------------------ |
| **Type** | Currency |
| **Data Source** | [Upstack Costs](/dashboard/settings/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/total-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](/dashboard/settings/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/shopify), [Upstack Costs](/dashboard/settings/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/shopify), [Upstack Costs](/dashboard/settings/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/shopify), [Upstack Costs](/dashboard/settings/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/returning-customer-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/returning-customer-orders) | Number of orders from repeat buyers |
| Metadata | |
| --------------- | ----------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/shopify), [Upstack Costs](/dashboard/settings/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/returning-customer-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](/dashboard/settings/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)
# 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/shopify), [Upstack Costs](/dashboard/settings/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/shopify), [Upstack Costs](/dashboard/settings/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/total-orders)
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------- | ------------------------------------------- |
| [**Variable Costs**](/reference/metrics/orders/cogs/variable-costs) | Handling + Gateway + Shipping + Other costs |
| [**Total Orders**](/reference/metrics/orders/counts/total-orders) | Number of orders placed |
| Metadata | |
| --------------- | ----------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/shopify), [Upstack Costs](/dashboard/settings/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/total-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/shopify), [Upstack Costs](/dashboard/settings/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: Profit After All Variable Costs
Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/contribution-margin
Track your true marketing profit with Contribution Margin (CM3). Calculate profit after deducting COGS, fulfillment, transaction, marketing, and ad spend.
Total contribution margin (CM3) after deducting all variable costs including COGS, fulfillment, transaction fees, and marketing/ad spend from net revenue.
## Formula
**Contribution Margin** = **CM2** − **Marketing Cost** − **Ad Spend** − **Agency Fees**
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| **CM2** | Margin after deducting COGS, fulfillment, and transaction costs from net revenue |
| [**Marketing Cost**](/reference/metrics/orders/contribution-margin/marketing-cost) | User-defined marketing costs allocated per order |
| [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend/blended-spend) | Total advertising spend across all connected platforms |
| **Agency Fees** | User-defined agency fees allocated per order |
| Metadata | |
| --------------- | -------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/shopify), [Upstack Costs](/sources/upstack-costs) |
| **Aggregation** | Sum |
***
## Example
Your store generated **\$125,000** in net revenue last month. After all variable costs:
| Line Item | Amount | Running Margin |
| --------------------------- | --------- | ------------------ |
| Net Revenue | \$125,000 | \$125,000 |
| − COGS | \$37,500 | \$87,500 (CM1) |
| − Fulfillment + Transaction | \$12,500 | \$75,000 (CM2) |
| − Marketing Cost | \$8,000 | \$67,000 |
| − Ad Spend | \$15,000 | \$52,000 |
| − Agency Fees | \$2,000 | **\$50,000 (CM3)** |
Your Contribution Margin is **\$50,000**, representing 40% of net revenue.
***
## How It Works
Contribution Margin (CM3) represents profit remaining after subtracting all variable costs from net revenue. It's calculated as a layered waterfall: Net Revenue → CM1 (minus COGS) → CM2 (minus fulfillment and transaction costs) → CM3 (minus marketing, ad spend, and agency fees). This metric shows true marketing profitability before fixed operating expenses.
***
## When to Use
| Scenario | Action |
| ----------------------- | --------------------------------------------------------- |
| Measuring marketing ROI | Compare contribution margin to total marketing investment |
| Setting ad budgets | Ensure campaigns maintain positive CM3 |
| Pricing decisions | Verify products cover all variable costs |
| Profitability analysis | Identify which channels generate real profit |
***
## Related Metrics
| Metric | Relationship |
| ------------------------------------------------------------------------------ | ------------------------------------- |
| [Gross Profit](/reference/metrics/orders/contribution-margin/gross-profit) | Net Revenue minus COGS (CM1) |
| [Marketing Cost](/reference/metrics/orders/contribution-margin/marketing-cost) | User-defined marketing cost component |
| [Total Cost](/reference/metrics/orders/contribution-margin/total-cost) | Sum of all cost components |
| [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Starting point before deductions |
[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** ÷ **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/shopify), [Upstack Costs](/sources/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)
# Contribution Margin: Track CM1-CM4 Per Order
Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/index
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/shopify)\
**Metrics:** 24
## 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
### 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
# 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/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** ÷ **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/conversions/orders) | Total number of attributed orders |
| Metadata | |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **Type** | Currency |
| **Data Source** | [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/tiktok-ads), [Shopify](/sources/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-per-order) | Marketing cost for first-time buyers |
| [Returning Customer Marketing Cost Per Order](/reference/metrics/orders/contribution-margin/returning-customer-marketing-cost-per-order) | 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** ÷ **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/shopify), [Upstack Costs](/sources/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 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/shopify), [Upstack Costs](/sources/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/shopify), [Upstack Costs](/sources/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 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** **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/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 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** + **NC Fulfillment** + **NC Marketing** + **NC Agency Fees** + **NC 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/shopify), [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [Upstack Costs](/sources/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) | 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/shopify), [Upstack Costs](/sources/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)
# 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/shopify), [Upstack Costs](/sources/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** ÷ **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/shopify), [Upstack Costs](/sources/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 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/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 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** ÷ **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/shopify), [Upstack Costs](/sources/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)
# 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** + **Fulfillment** + **Marketing** + **Agency Fees** + **Opex**
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------- | ------------------------------- |
| [**COGS**](/reference/metrics/orders/cogs/cogs) | Cost of goods sold for products |
| [**Fulfillment**](/reference/metrics/orders/fulfillment/fulfillment-cost) | Shipping and handling costs |
| [**Marketing**](/reference/metrics/orders/performance/total-ad-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/shopify), [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/google-ads), [Upstack Costs](/sources/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/orders/contribution-margin/net-profit) | Revenue minus total cost |
| [CM3](/reference/metrics/orders/contribution-margin/cm3) | 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** ÷ **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/shopify), [Upstack Costs](/sources/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/index
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/shopify)\
**Metrics:** 9
## Metrics in This Group
| 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 ÷ 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/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/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/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/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/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 ) **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/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/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)
# 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/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/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)
# 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/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)
# Customer Metrics: Track New vs Returning Customers
Source: https://docs.upstackdata.com/reference/metrics/orders/customers/index
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/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 + 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 ÷ 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
# 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/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/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/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/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/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/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/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)
# 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 )
### Formula Components
| Metric | Definition |
| --------------------------- | ----------------------------------------------------------------------- |
| **Handling Cost per Order** | Individual handling fees applied per order from your cost configuration |
| Metadata | |
| --------------- | -------------------------------------------------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/shopify), [Upstack Costs](/sources/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 — global per-order handling fees 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** ÷ **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/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/shopify), [Upstack Costs](/sources/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)
# Fulfillment Costs: Track Shipping and Handling Expenses
Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/index
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/shopify), [Upstack Costs](/sources/upstack-costs)\
**Metrics:** 15
## Metrics in This Group
| 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 + Shipping Cost + Other Fulfillment Cost
* **CM2** = CM1 − Fulfillment Costs (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
# 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/shopify), [Upstack Costs](/sources/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/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/shopify), [Upstack Costs](/sources/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/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 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/shopify), [Upstack Costs](/sources/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/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/shopify), [Upstack Costs](/sources/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 )
### 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/shopify), [Upstack Costs](/sources/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** ÷ **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/upstack-costs), [Shopify](/sources/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/shopify), [Upstack Costs](/sources/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/shopify), [Upstack Costs](/sources/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)
# Orders Metrics: Track Revenue, Orders, and Profitability
Source: https://docs.upstackdata.com/reference/metrics/orders/index
Track orders and revenue metrics in Upstack. View 190+ 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/shopify)\
**Metrics in Category:** 190+
## Subcategories
| Subcategory | Metrics | Description |
| -------------------------------------------------------------------- | ------- | ------------------------------------------------- |
| [Order Counts](/reference/metrics/orders/counts) | 9 | Order volume, units sold, and subscription orders |
| [Revenue](/reference/metrics/orders/revenue) | 10 | Total, gross, and net revenue by customer type |
| [Average Order Value](/reference/metrics/orders/aov) | 9 | AOV calculations across revenue types |
| [Customers](/reference/metrics/orders/customers) | 8 | Customer counts and new vs returning rates |
| [Adjustments](/reference/metrics/orders/adjustments) | 51 | Refunds, discounts, shipping, and tax |
| [Cost of Goods Sold](/reference/metrics/orders/cogs) | 22 | Product costs and variable costs |
| [Fulfillment Costs](/reference/metrics/orders/fulfillment) | 14 | Handling, shipping, and fulfillment expenses |
| [Transaction Costs](/reference/metrics/orders/transaction) | 9 | Payment gateway and transaction fees |
| [Contribution Margin](/reference/metrics/orders/contribution-margin) | 23 | CM1-CM4 margin calculations per order |
| [Product Margin](/reference/metrics/orders/product-margin) | 9 | Gross profit and product-level margins |
| [Performance](/reference/metrics/orders/performance) | 25 | ROAS, MER, CPA, and RAAD metrics |
| [Lifetime Value](/reference/metrics/orders/ltv) | 6 | 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/cpa) | Cost per acquisition |
| [New Customer CPA](/reference/metrics/orders/performance/new-customer-cpa) | Cost per new customer acquisition |
| [Returning Customer CPA](/reference/metrics/orders/performance/returning-customer-cpa) | Cost per returning customer order |
| [Total ROAS](/reference/metrics/orders/performance/total-roas) | Return on ad spend using total revenue |
| [Gross ROAS](/reference/metrics/orders/performance/gross-roas) | Return on ad spend using gross revenue |
| [Net ROAS](/reference/metrics/orders/performance/net-roas) | Return on ad spend using net revenue |
| [New Customer Total ROAS](/reference/metrics/orders/performance/new-customer-total-roas) | New customer total ROAS |
| [New Customer Gross ROAS](/reference/metrics/orders/performance/new-customer-gross-roas) | New customer gross ROAS |
| [New Customer Net ROAS](/reference/metrics/orders/performance/new-customer-net-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) |
# 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 ) **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/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 ) **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/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 ) **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/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 ) **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/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 ) **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/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 ) **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/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)
# Lifetime Value Metrics
Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/index
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
# LTV: Customer Lifetime Value
Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv
Track cumulative customer lifetime value in Upstack. Measure total revenue generated per customer across all purchases since their first order.
Average total revenue generated per customer across all their purchases since their first order.
## Formula
**LTV** = **Total Customer Revenue** ÷ **Customer Count**
### Formula Components
| Metric | Definition |
| ----------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| [**Total Customer Revenue**](/reference/metrics/orders/revenue/total-revenue) | Sum of all order revenue across each customer's purchase history |
| [**Customer Count**](/reference/metrics/orders/customers/unique-customers) | Number of unique customers who placed at least one order |
| Metadata | |
| --------------- | --------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/shopify) |
| **Aggregation** | Average |
***
## Example
Your store has **2,500 customers** who have generated **\$625,000** in total revenue since they first purchased:
| Metric | Value |
| ------------------------ | ------------ |
| Total Revenue (All-Time) | \$625,000 |
| Unique Customers | 2,500 |
| **LTV** | **\$250.00** |
***
## How It Works
LTV calculates the average total revenue per customer across their entire purchase history. It sums all orders for each customer from their first purchase to present, then averages across all customers. Unlike time-bounded LTV metrics (90d, 180d, 365d), this captures full customer lifetime value.
***
## When to Use
| Scenario | Action |
| --------------------------------------------- | ----------------------------------------------------------- |
| Evaluating customer acquisition profitability | Compare LTV to Customer Acquisition Cost (CAC) |
| Setting max CPA targets | Use LTV to determine sustainable acquisition spend |
| Segmenting high-value customers | Identify customers above average LTV for retention programs |
| Forecasting long-term revenue | Project revenue based on expected customer acquisition |
***
## Related Metrics
| Metric | Relationship |
| ------------------------------------------------------------------------ | ------------------------------------- |
| [LTV 90d](/reference/metrics/orders/ltv/ltv-90) | 90-day customer value |
| [LTV 180d](/reference/metrics/orders/ltv/ltv-180) | 180-day customer value |
| [LTV 365d](/reference/metrics/orders/ltv/ltv-365) | Full-year customer value |
| [Unique Customers](/reference/metrics/orders/customers/unique-customers) | Denominator for LTV calculation |
| [AOV](/reference/metrics/orders/aov/total-aov) | Per-order value vs per-customer value |
[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**
### 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/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**
### 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/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/revenue/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**
### 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/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**
### 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/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**
### 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/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**
### 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/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)** ÷ **Customer Acquisition Cost (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/shopify), [Meta Ads](/sources/facebook-ads), [Google Ads](/sources/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)
# 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** ≥ **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/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)
# 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/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** ÷ **New Customers**
### Formula Components
| Metric | Definition |
| --------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend/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/facebook-ads), [Google Ads](/sources/google-ads), [TikTok Ads](/sources/tiktok), [Shopify](/sources/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-efficiency/blended-cpa) | 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/blended-spend) | Numerator for CAC calculation |
[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** ÷ **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/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)
# Performance Metrics
Source: https://docs.upstackdata.com/reference/metrics/orders/performance/index
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/shopify) order data, specifically using cost of goods sold and unit quantities from your order history.
# 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** ÷ **Total Revenue** ) × 100
### Formula Components
| Metric | Definition |
| ---------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend/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/shopify), [Ad Platforms](/sources/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/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)
# 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** ÷ **Total Orders**
### Formula Components
| Metric | Definition |
| ------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| [**New Customer Orders**](/reference/metrics/orders/counts/new-customer-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/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** ÷ **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/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** ÷ **Ad 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/ads/total-spend) | Total advertising spend |
| Metadata | |
| --------------- | --------------------------------------------------------------------------- |
| **Type** | Ratio |
| **Data Source** | [Shopify](/sources/shopify), [Advertising Platforms](/sources/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/total-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)
# 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** ÷ **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/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** ÷ **Total 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/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)
# 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** ÷ **Total Ad 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/blended-spend) | Sum of advertising spend across all connected platforms |
| Metadata | |
| --------------- | --------------------------- |
| **Type** | Multiplier (e.g., 3.5×) |
| **Data Source** | [Shopify](/sources/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)
# Product Margin Metrics
Source: https://docs.upstackdata.com/reference/metrics/orders/product-margin/index
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 →](/get-started/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/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/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: Revenue Minus Cost of Goods Sold
Source: https://docs.upstackdata.com/reference/metrics/orders/product-margin/product-margin
Track product-level profitability by subtracting cost of goods from revenue. Learn the formula, see examples, and optimize your product mix for profit.
The profit remaining after subtracting cost of goods sold (COGS) from gross revenue.
## Formula
**Product Margin** = [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) − [**COGS**](/reference/metrics/orders/cogs/cogs)
### Formula Components
| Metric | Definition |
| -------------------------------------------------------------------- | -------------------------------------------------------------------- |
| [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Total revenue from order line items before discounts and adjustments |
| [**COGS**](/reference/metrics/orders/cogs/cogs) | Cost of goods sold based on product costs in Shopify |
| Metadata | |
| --------------- | --------------------------- |
| **Type** | Currency |
| **Data Source** | [Shopify](/sources/shopify) |
| **Aggregation** | Sum |
***
## Example
Your store generated **\$85,000** in gross revenue with **\$42,500** in COGS:
| Period | Gross Revenue | COGS | Product Margin |
| -------- | ------------- | -------- | -------------- |
| January | \$85,000 | \$42,500 | \$42,500 |
| February | \$92,000 | \$44,160 | \$47,840 |
| March | \$78,000 | \$39,780 | \$38,220 |
Product Margin shows how much profit remains from each sale before fulfillment, transaction costs, and marketing expenses are deducted.
***
## How It Works
Product Margin calculates the difference between what you charge customers and what you paid for the products. COGS is pulled from product cost data in Shopify. This metric represents your first layer of profitability before operational costs.
***
## When to Use
| Scenario | Action |
| -------------------------------- | -------------------------------------------------------------------- |
| Evaluating product profitability | Compare margin across product lines or SKUs |
| Pricing decisions | Ensure prices cover costs and target margin |
| Supplier negotiations | Identify products where COGS reduction would have the biggest impact |
| Product mix optimization | Shift marketing toward higher-margin products |
***
## Related Metrics
| Metric | Relationship |
| ---------------------------------------------------------------------------------------- | --------------------------------------------------- |
| [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Revenue component in the Product Margin calculation |
| [COGS](/reference/metrics/orders/cogs/cogs) | Cost component subtracted from revenue |
| [Contribution Margin](/reference/metrics/orders/contribution-margin/contribution-margin) | Product Margin minus additional variable costs |
| [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds |
[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/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/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/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)
# 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/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/averages/aov) | Revenue per order |
| [Orders](/reference/metrics/orders/counts/orders) | Count of completed orders |
[See all Revenue metrics →](/reference/metrics/orders/revenue)
# Revenue Metrics: Track Total, Gross, and Net Revenue
Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/index
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/shopify)\
**Metrics:** 10
## Metrics in This Group
| 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 - Discounts - Refunds
* **Total Revenue** = Net Revenue + Shipping + 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
# 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** − **Discounts** − **Refunds**
### 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/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/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/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/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/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** − **RC Discounts** − **RC 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/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/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/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)
# 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/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)
# 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/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/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/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)
# Transaction Costs: Track Payment Gateway Fees
Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/index
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/shopify)\
**Metrics:** 11
## Metrics in This Group
| 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 + Other Transaction Cost
* **New Customer Total Transaction Cost** = NC Gateway Cost + NC Other Transaction Cost
* **Returning Customer Transaction Cost** = RC Gateway Cost + RC Other Transaction Cost
* **CM2** = CM1 - Fulfillment Costs - Transaction Costs
* 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
# 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/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/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)
# 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/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/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/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)
# 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/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)
# 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 Settings → Pixel — 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 the Event Health page**
* Once signed in, click **Settings** in the bottom-left of the [Upstack dashboard](https://app.upstackdata.com).
* In the Settings menu, open **Event Health**.
***
## **Step 3: Locate your Pixel ID**
* Your Pixel ID is displayed at the top of the **Event Health** page, clearly labelled **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/shopify/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 **Event Health**, confirm the new events arrive against your Pixel ID.
***
## **Can't see your Pixel ID?**
* Make sure you're on the **Event Health** page 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.
Go to the **Team** tab inside Settings, then click **Add Team member**.
* 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.
The user receives an invite like the following:
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/shopify/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 **Event Health**, 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/shopify/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 **Event Health**, 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](/pixel/standard-events) and [Properties & Context](/pixel/properties).
***
## 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](/pixel/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](/pixel/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](/pixel/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](/pixel/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](/pixel/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](/pixel/standard-events) for the full specification.
Fires when a visitor subscribes to email or SMS marketing.
```html theme={null}
```
See [Subscribe in Standard Events](/pixel/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/shopify/how-to-install-upstack-data-pixel-helper) browser extension to confirm events fire with the expected parameters
3. **Check Event Health** — In the [Upstack dashboard](https://app.upstackdata.com) under **Event Health**, 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 →](/guides/facebook-ads/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.
# Connect Facebook Ads
Source: https://docs.upstackdata.com/sources/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/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/events-not-reaching-destination).
* [ ] 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/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/events-not-reaching-destination).
* [ ] 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.
# Sources
Source: https://docs.upstackdata.com/sources/overview
Connect the platforms that feed data into Upstack Data for analytics, attribution, and activation.
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 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/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/events-not-reaching-destination).
* [ ] 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/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](/pixel/custom-events) |
## 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/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/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/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/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/events-not-reaching-destination).
* [ ] 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.
# Support
Source: https://docs.upstackdata.com/support
Contact Upstack Data support — chat with an agent via Intercom, email support@upstackdata.com, or browse troubleshooting guides for events, destinations, and attribution issues.
We're here to help you get the most out of Upstack Data. Whether you're stuck on installation, debugging events, or planning a complex destination setup, our support team is ready to assist.
## Get help now
The fastest way to reach us is in-app chat. Click below to start a conversation with the support team.
Prefer email? Reach us at [support@upstackdata.com](mailto:support@upstackdata.com).
## Support channels
Open the chat widget to talk with a support agent. Most messages get a response within a few hours during business hours.
For longer questions, account issues, or screenshots, email us at [support@upstackdata.com](mailto:support@upstackdata.com).
Browse troubleshooting guides for the most common issues.
Step-by-step guides for installation, destinations, and platform concepts.
## Support hours
Our support team is available Monday through Friday, 9am–6pm ET.
Outside business hours, you can still send a message — we'll respond first thing the next business day. For urgent issues affecting production tracking, mark your message as **Urgent** and we'll route it to an on-call engineer.
## Before you reach out
To help us resolve issues faster, include the following when possible:
* **Pixel ID** (find it in **Settings → Pixel** in your dashboard)
* **Store URL** or domain you're tracking
* **Affected destination** (Meta, TikTok, Klaviyo, etc.)
* **Browser and OS** if the issue is in the dashboard
* **Screenshots** of error messages or unexpected behavior
* **Time range** when the issue started
You can also directly and share these details in the conversation.
## Common issues
If you're hitting a known issue, our troubleshooting guides may resolve it without waiting for support:
Verify your pixel is loading and events are reaching Upstack.
Check destination credentials, mapping, and forwarding rules.
Reconcile differences between Upstack reporting and your ad platform.
Diagnose and resolve double-counted conversions.
## Account and billing
For subscription, billing, or plan questions, see [Subscriptions and billing FAQ](/billing/subscriptions-and-billing) or .
# Troubleshooting: Attribution Numbers Don't Match
Source: https://docs.upstackdata.com/troubleshooting/attribution-mismatch
Diagnose attribution mismatches between Upstack Data and Meta Ads Manager, Google Analytics, or Shopify caused by attribution models, lookback windows, timezones, and event deduplication.
## Quick Diagnostic
**Start here:** Small discrepancies (5–15%) between Upstack and other platforms are expected and normal. Every analytics platform uses different attribution models, lookback windows, and counting methods. This guide helps you understand *why* numbers differ and when a discrepancy signals an actual problem.
## Symptoms and Fixes
**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.
**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.
**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.
**Likely cause:** Deduplication differences. Upstack and destination platforms use different deduplication keys. Upstack deduplicates by `event_id` before forwarding, but the destination may further deduplicate by user + event type + time window.
**How to reconcile:**
1. A gap of 5–10% is normal and expected due to deduplication differences.
2. Check Upstack's **Live Event Stream** — if you see duplicate `event_id` values, your pixel may be firing the same event multiple times (see [Duplicate Events](/troubleshooting/duplicate-events)).
3. For Meta specifically: if you send both browser pixel events *and* Upstack server events for the same conversion, Meta deduplicates them using `event_id`. Ensure your Upstack events include the same `event_id` as the browser pixel fires.
4. For Google Analytics: GA4 automatically deduplicates events with the same `event_name`, `event_timestamp`, and user identifiers within a short window. This means GA4 may show fewer events than Upstack.
5. To reduce discrepancies, ensure deduplication keys are consistent across your pixel and Upstack's server-side events.
## Escalation
If you're seeing discrepancies greater than 20% consistently, collect the following before contacting support:
* Your **Pixel ID** and the **platforms** you're comparing (e.g., Meta Ads Manager, GA4, Shopify)
* The **date range** and **timezone** for each platform's report
* **Screenshots** of the numbers from each platform for the same period
* The **attribution model and lookback window** 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.
# Troubleshooting: Data Stopped Syncing
Source: https://docs.upstackdata.com/troubleshooting/data-stopped-syncing
Resolve stale Shopify data, missing ad spend updates, and stopped webhook events in Upstack Data — covers revoked permissions, expired tokens, webhook failures, and source connection health.
## Quick Diagnostic
**Start here:** Go to **Settings → Sources** in your Upstack dashboard. Each connected source shows a **Last synced** timestamp and a health indicator. If any source shows a red status or a "last synced" time older than expected, click into it to see the specific error.
## Symptoms and Fixes
**Likely cause:** The Shopify app's API permissions were revoked or the app was uninstalled and reinstalled without completing the full OAuth flow. Shopify stops sending webhooks and blocks API access when permissions are incomplete.
**Fix:**
1. In your Shopify admin, go to **Settings → Apps and sales channels**.
2. Find **Upstack Data** in the list. If it shows a warning icon or says "Access limited," the permissions need to be re-granted.
3. Click **Upstack Data** → **App settings** → look for a **Re-authorize** or **Update permissions** prompt.
4. Complete the OAuth flow — ensure you approve all requested scopes (orders, customers, products, checkouts).
5. After re-authorizing, return to Upstack → **Settings → Sources → Shopify** and click **Test Connection**. The status should change to green.
6. Upstack will automatically backfill missed data for the period it was disconnected (up to 7 days). For longer gaps, contact support to trigger a full historical sync.
**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.
**Likely cause:** Shopify automatically removes webhooks that consistently fail to respond. If Upstack's webhook endpoint experienced downtime or returned errors for 48+ hours, Shopify may have deleted the webhook subscription.
**Fix:**
1. Go to **Settings → Sources → Shopify** in your Upstack dashboard.
2. Check the **Webhook Status** section. It lists all registered webhooks and their health.
3. If webhooks show as **Inactive** or **Not Registered**:
* Click **Re-register Webhooks**. Upstack will re-create all required webhook subscriptions with Shopify.
* This process takes about 30 seconds.
4. After re-registration, trigger a test event by placing a test order in your Shopify store (you can use Shopify's **Bogus Gateway** for test orders).
5. Check the Live Event Stream for the incoming webhook event within 2 minutes.
6. If webhooks fail to register, verify that your Shopify plan supports webhooks (all paid plans do — the Shopify Starter plan has limited webhook support).
**Likely cause:** The connection is authenticated but the sync job is stuck or paused. This can happen after a plan downgrade (which may reduce sync frequency) or if the source data volume exceeds your plan's limits.
**Fix:**
1. Go to **Settings → Sources** and click the affected source.
2. Check the **Sync History** log — look for the most recent sync attempt and its status.
3. If the last sync shows an **error**:
* Note the error message (e.g., "Rate limited," "Timeout," or "Quota exceeded").
* Click **Sync Now** to trigger a manual sync attempt.
4. If the last sync shows **success** but the "Last synced" time is old:
* Your sync schedule may have changed. Check **Settings → Subscription** to confirm your plan's sync frequency (hourly, every 6 hours, or daily).
* Free plans sync once per day. [Upgrading your plan](/billing/upgrading-and-downgrading) increases sync frequency.
5. If manual sync also fails, try disconnecting and reconnecting the source. This resets the sync cursor without losing historical data.
6. After reconnection, monitor the Sync History for 15 minutes to confirm data starts flowing.
## Check your subscription
**Before troubleshooting further:** Verify your Upstack subscription is active. An expired trial, failed payment, or paused subscription will stop data syncing. Check **Settings → Subscription** in the Upstack dashboard or see [Subscriptions and billing](/billing/subscriptions-and-billing) for help.
## Escalation
If none of the above resolved the issue, collect the following before contacting support:
* Your **Pixel ID** and the **source name** (e.g., Shopify, Facebook Ads)
* The **last successful sync timestamp** from Settings → Sources
* Any **error messages** from the Sync History log
* Your **Shopify plan** name and your **Upstack subscription tier**
***
**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
Confirm that your Shopify store is sending tracking events to the Upstack pipeline.
See every source Upstack supports and how to connect them.
# Troubleshooting: Duplicate Events
Source: https://docs.upstackdata.com/troubleshooting/duplicate-events
Fix duplicate events, inflated revenue, and doubled conversion counts in Upstack Data — covers client/server overlap, page reloads, Shopify thank-you page behavior, and deduplication settings.
## Quick Diagnostic
**Start here:** Open the **Live Event Stream** in your Upstack dashboard and filter by `Purchase` events. If you see two events with identical timestamps and order IDs, you likely have both the Shopify native pixel and the Upstack server-side integration firing for the same conversion. Upstack deduplicates automatically when both events share the same `event_id` — the fix is usually ensuring consistent event IDs.
## Symptoms and Fixes
**Likely cause:** Both a client-side pixel (e.g., Shopify's native conversion tracking or a custom script) and Upstack's server-side integration are capturing the same purchase event. Without matching `event_id` values, Upstack treats them as separate events.
**Fix:**
1. Go to **Live Event Stream** and click on the duplicate purchase events. Compare their `source` field:
* If one shows `pixel` (client-side) and the other shows `webhook` or `server` — this confirms the overlap.
2. **Recommended approach — rely on server-side only:** In your Shopify admin, go to **Settings → Customer events** and disable any custom purchase tracking scripts that duplicate what Upstack already captures via server-side webhooks.
3. **Alternative — keep both with deduplication:** If you need client-side events for latency reasons, ensure both the client pixel and the Shopify webhook send the same `event_id` (the Shopify order ID works well). Upstack deduplicates events sharing the same `event_id` within a 5-minute window.
4. After making changes, monitor the Live Event Stream for 30 minutes to confirm duplicates have stopped.
**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 `