TheDocumentation Index
Fetch the complete documentation index at: https://docs.sourcemedium.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
sm_order_type field classifies whether an order is a subscription or one-time purchase. SourceMedium determines this at the line-item level first, then rolls those line-level signals up to the order. This classification is used in subscription analytics, cohort analysis, and LTV reporting.
Order Type Values
Common values in customer-facing datasets are:| Value | Description |
|---|---|
subscription | Recurring subscription order |
one_time | Non-subscription purchase |
subscription_&_one_time | Mixed order containing both subscription and one-time items |
Exact enum strings can vary by dataset version or customer environment. When you need to filter precisely, confirm values with
SELECT DISTINCT sm_order_type in your own warehouse. When possible, prefer boolean helper fields such as is_subscription_order.How Order Type Is Determined
Order type classification uses a multi-signal approach evaluated at the line-item level, then rolled up to the order.General signal sources
SourceMedium can use several signal families:- Direct subscription-platform line-item mappings such as ReCharge, Retextion, Chargebee, or Amazon Subscribe & Save
- Shopify line-item metadata and property-based signals
- Shopify order tags and app/source signals
- Platform fields such as
is_from_subscription
Shopify signal precedence
For Shopify, SourceMedium now prefers explicit line-level signals over older order-tag-only heuristics.| Priority | Signal | Notes |
|---|---|---|
| 1 | Direct subscription-platform line-item mapping | Strongest signal when a subscription platform integration provides line-level classification |
| 2 | Explicit Shopify one-time line signal | Prevents false subscription classification when a line is explicitly marked one-time |
| 3 | Explicit Shopify subscription line signal | Uses line-item metadata from Shopify properties when present |
| 4 | Pre-cutover legacy Shopify fallbacks | Includes prepaid + subscription tags, Shopify subscription contract app ID, subscription tags, and is_from_subscription |
| 5 | Limited merchant-aware post-cutover fallback | Used only for specific not-yet-cutover Shopify merchants in narrow single-line scenarios |
| 6 | Default | Treat as one-time |
Shopify cutover behavior
After the Shopify subscription-classification cutover date (2025-01-01 in the current project config), SourceMedium applies stricter line-level rules:
- Explicit one-time metadata can override ambiguous subscription-like metadata.
- Placeholder metadata such as a Shopify
subscription_idof1is ignored as a subscription signal. - Free-gift metadata is separated from true subscription classification.
- Legacy order-tag fallback remains available only in limited merchant-specific cases.
- That post-cutover fallback is restricted to single-line orders. Multi-line orders from not-yet-cutover merchants default to one-time unless explicit line signals or direct subscription-platform mappings are present.
Subscription tag patterns
When legacy order-tag fallbacks are used, the system recognizes patterns such as:Subscription,SubscriptionActiverecurring_order,recurring-ordersubscription_order_loopfirst_subscription_order,first-subscriptionLuna Subscription,Ordergroove Trigger Order
Related Dimensions
is_subscription_order
A boolean convenience field derived fromsm_order_type:
is_subscription_order = TRUE when you want a stable filter that is less sensitive to enum-string differences across environments.
order_sequence
Customer lifecycle classification based on order position:| Value | Description |
|---|---|
1st_order | Customer’s first order (new customer) |
repeat_order | Any subsequent order (returning customer) |
subscription_order_sequence
Subscription-specific lifecycle classification commonly appears as:| Value | Description |
|---|---|
1st_sub_order | Customer’s first subscription purchase |
recurring_sub_order | Subscription renewal or subsequent subscription order |
one_time_order | Non-subscription order |
Line-level subscription fields
For product-level analysis, useobt_order_lines instead of relying only on the order rollup:
order_line_typeis_order_line_subscriptionsubscription_order_indexsubscription_order_sequence
Using Order Type In Analysis
Filter to subscription orders
Separate subscription vs one-time metrics
Use line-level fields when carts can be mixed
Best Practices
Prefer direct subscription-platform integrations
If you have ReCharge, Skio, Stay AI, Loop, Retextion, Chargebee, or another supported subscription platform, the most reliable classification comes from direct line-level platform data.Preserve explicit Shopify line-item metadata
For Shopify stores, explicit line-item metadata is more reliable than tag-only logic after the cutover. If your app emits explicit subscription or one-time properties, preserve them.Validate with source-platform data
If you have a direct subscription-platform integration, compare SourceMedium classifications to that platform’s line-level or order-level data when troubleshooting mismatches.Use line-level fields for product analysis
Use order-level fields for order and customer retention analysis. Use line-level fields when the business question is about products, bundles, subscription mixes, or gifts inside a cart.Related Resources
Subscription Flags
Understand order-level and line-level subscription fields
obt_order_lines
Review line-level subscription field definitions

