Skip to main content

Filtering Out Recurring Subscription Revenue in Hiro

If recurring subscription revenue (from Recharge, Skio, etc.) is inflating your attribution numbers, you can filter it out in a couple of clicks.

This guide covers:

  • How Shopify tags subscription orders

  • How to exclude recurring subscription revenue from reporting

  • How to track new subscription events separately

  • What to expect after you filter


How Shopify tags subscription orders

Every Shopify order carries an Order Source (source_name) that tells you where the order came from. For subscription businesses, this field is what separates a customer's first subscription purchase from every renewal after that.

First subscription purchase → web.

Every renewal after → subscription_contract*.

  • web → a fresh storefront checkout. The first charge of a new subscription lands here, because it's really a regular cart that also created a subscription contract behind the scenes.

  • subscription_contract / subscription_contract_checkout_one → a recurring charge Recharge pushed to Shopify on a scheduled date. No new cart, just the next billing cycle firing.

This is why excluding subscription_contract* removes recurring revenue without losing the initial acquisition — the first purchase is safely over in web.

Order Source reference

Order Source

What it means

All Orders

Everything — recurring revenue included.

Web

Native Shopify checkout. Includes the first purchase of a subscription but excludes recurring renewals.

Subscription Contract

Recharge recurring charges (legacy flow).

Subscription Contract Checkout One

Recharge recurring charges (newer flow, rolled out October 2025). Most businesses now see a mix of both.

Draft Orders

Manual orders created in Shopify admin.

POS

Physical retail orders via Shopify POS.

Third-party apps / API / manual uploads

Facebook Shop, Instagram, TikTok, custom integrations. Often shown as a numeric code.

To remove recurring revenue, exclude both Subscription Contract and Subscription Contract Checkout One in Default Filters (See Part 1 below).

To mirror in Klaviyo, create a Custom Metric:

  • Metric: Placed Order

  • Filters: Source Name ≠ subscription_contract AND Source Name ≠ subscription_contract_checkout_one


Part 1: Exclude Recurring Subscription Revenue

Step 1: Go to Client Settings

  • Navigate to Account → Client Settings.

Step 2: Open the Default Filters Tab

  • Click on the Default Filters tab.

Step 3: Set the Order Filter

  • Under Order Sources, remove All Orders (default) and add Subscription Contract and Subscription Contract Checkout One

  • Select the checkbox for Exclude

Step 4: Apply the Filter

  • Click Update Order Filters.

  • The status will change to "Data Update Pending" - once it is complete (should only take a few minutes), you will receive an email notification

Step 5: Confirm the Change

  • A confirmation appears on the Client Settings page. Recurring revenue is now excluded across all reporting views.


Part 2: Track New Subscription Events with Custom Metrics

Once recurring revenue is excluded, you can track new subscription activity separately — new subs started, cancellations, reactivations, etc. for more granular reporting.

Step 1: Go to Custom Metrics in Client Settings

  • On the same Client Settings page, click the Custom Metrics tab.

Step 2: Select Metrics to Track

  • From the dropdown, choose the subscription event you want to track (e.g. Subscription Started on Recharge, Subscription Cancelled on Recharge, etc.)

Step 3: Save & Backfill Data

  • Click Save Tracked Metrics.

  • Data will backfill overnight and appear the next day.

Step 4: View Metrics in Hiro

  • Once custom metrics are successfully backfilled, you will be able to find them under the Custom Metrics tab under Reporting on the left hand menu.

  • Select the custom metric you want to track in the dropdown menu.



TLDR

Shopify is the source of truth for revenue. Recharge (or subscription events) tell you what kind of moment each order was. Recharge events and Shopify orders describe the same moments from different angles.

Filter out subscription_contract* to exclude recurring revenue, and add Custom Metrics on top to track lifecycle events — but don't add or subtract the two together.


FAQ

My Subscription Started count doesn't equal my new-subscriber web revenue. Is the data wrong?

Two common reasons for a gap: (1) a checkout with multiple sub items fires one Recharge event per line but creates one web order. Event counts and order counts aren't meant to match 1-to-1. (2) some new subs (< 6%) start from inside the Recharge customer portal rather than a storefront checkout — those land on subscription_contract and get filtered out along with renewals. For most businesses it's a minor rounding effect.

Will excluding subscription_contract* hurt my attribution?

No — it usually improves it. Recurring renewals are scheduled billing, not marketing-driven. Including them over-credits recent campaigns for revenue locked in months ago.

We use Skio / Smartrr / Stay AI — does this still work?

Yes. All major Shopify subscription apps tag recurring charges with subscription_contract*, so the filter logic is the same. Custom Metric event names differ by app (e.g. Subscription Started on Skio), but the Order Source filter works identically.

Did this answer your question?