How SourceMedium classifies orders as subscription vs one-time purchases
The 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.
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.
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
For Shopify stores, order tags are still useful, but they are no longer the best signal after the cutover for merchants with reliable line-level metadata. Explicit line-item signals and direct subscription-platform mappings are more authoritative.
Direct subscription-platform mappings can come from exact line-item joins or fallback matching when platform data is incomplete, which helps some lines classify correctly even when a perfect line-item ID match is unavailable.
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_id of 1 is 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.
SELECT sm_order_type, COUNT(*) AS order_count, SUM(order_net_revenue) AS revenueFROM `your_project.sm_transformed_v2.obt_orders`WHERE is_order_sm_valid = TRUEGROUP BY sm_order_type;
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.
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.
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 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.