Recharge to Snowflake
Recharge records subscription intent: charges, skips, cancels and changes. In Snowflake it sits beside Shopify orders, so each order can be labelled without counting the sale twice.
The short answer
What you can load from Recharge
- Charges
- Status, type, processed and scheduled dates, plus the Shopify customer and order IDs. A checkout charge marks a first subscription order.
- Subscriptions
- Current state, interval settings and cancelled date. This shows where a subscriber is today, not what happened along the way.
- Skips and cancels
- Captured from webhooks or from state changes between dated snapshots, so each skip and cancel stays in history.
- Orders from prepaid charges
- A prepaid charge can create several Shopify orders when its orders count is above 1. Recharge orders act as the bridge.
How we set it up
- 1
Check how far back the history goes
In the 2021-11 API, processed charges older than 90 days drop out of charge responses. We check the API version and connector, and use the portal Exports tool so export and API data meet without a gap.
- 2
Map charges to Shopify IDs
We read the Shopify customer from external_customer_id and the Shopify order from external_order_id, and send anything unmatched to an exception report.
- 3
Keep an append-only events table
We build recharge_subscription_events with subscription, customer, event type and event date, deduplicated on subscription, type and date. For skips, the event date is the charge scheduled date.
- 4
Label Shopify orders, not Recharge revenue
Each Shopify order becomes a one-time order, a first subscription order or a renewal. Money still comes from Shopify only.
What breaks, and how we handle it
- Renewals counted twice
- A successful charge can point to a Shopify order, so the same sale shows up in both systems. In one worked example, adding both overstated a single customer by $122. We sum Shopify only.
- Changes that rewrite history
- Changing a subscription’s interval settings removes skipped charges, and reactivating a cancelled subscription sets cancelled_at back to null. Dated events keep last month’s skip in this month’s report.
- Cancelled is not churned
- A customer can cancel a subscription days after a one-time order. We keep subscription state and customer state in separate columns, each with a written rule.
- One charge, several subscriptions
- A charge can hold several subscriptions, and a customer can skip just one of them. We test skips at subscription level.
- Recharge metrics inside Klaviyo
- The Recharge and Klaviyo integration sends subscription data into Klaviyo. We do not load it as a second subscription history, and the started metric can fire more than once per checkout.
What we build on top of the Recharge data
- Charges table with one row per charge, used for order labels
- Append-only subscription events with skips and cancels
- Shopify orders labelled as one-time, first subscription order or renewal
- Customer timeline joining Shopify, Recharge and Klaviyo
- Separate subscription state and customer state
Common questions
Should I add Recharge revenue to Shopify revenue?
No. A successful Recharge charge can point to a Shopify order, so adding both counts the same sale twice. Take money from Shopify and use Recharge to label each order as a first subscription order or a renewal.
Why are older Recharge charges missing from my backfill?
The 2021-11 Recharge API docs say processed charges older than 90 days no longer appear in charge responses, and that the data stays available through the Exports tool. Check how your API version and connector handle them before the backfill.
How do I join Recharge to Shopify?
Each charge carries the Shopify customer ID in external_customer_id and the Shopify order ID in external_order_id. Prepaid charges can create several orders, so use Recharge orders as a bridge for those.
Why did a skip disappear from my Recharge report?
Changing a subscription’s interval settings removes skipped charges. Record skips and cancels as dated events from webhooks or snapshots, so history survives later changes.
Do two skips in a row predict a cancel?
That is a question for your own data. Test it across all subscribers before you turn it into an alert.
Want Recharge data you can trust?
Bring the Recharge reports that don't match. We'll trace them to the source and show you where to start.