Skip to main content

Subscription

This data represents the lifecycle of your subscriptions, including when subscribers sign up, complete trials, enter payment-failure grace periods, cancel, and expire. We need both the current state and history of subscriptions, typically stored in one of these formats:

  1. Billing period-based
  2. Lifecycle event-based

Apart from the subscription data, other demographic (non-PII) data is also valuable:

  • Gender
  • Postal / Zip code, Region, County etc.
  • Age-group
  • Marketing segments
  • Others…

Data that should not be shared

  • Full name
  • Address
  • Date of birth
  • Financial and Payment information (credit card information etc.)
  • IP address
  • Telephone / Mobile number
  • Email address
  • Login credentials or passwords
  • Personal Identification Numbers (National identification numbers, passport number etc.)

Billing period-based

This format usually consists of multiple tables (including the following) but might be slightly different and more or less normalised.

Subscription_periods: Multiple rows per subscription, each representing a billing period.

Columnsubscription_idperiod_beginperiod_endplanprice
DescriptionThe unique identifier of a subscription.Start date of the billing-period.End date of the billing-period. The next upcoming “billing-date”.What product is being subscribed to and on what terms.price billed per period.
Example: first period000101-01-202401-02-20242024-monthly9.99
Example: upgrade000101-02-202401-03-20242024-yearly99.99

Subscriptions: One row per subscription.

Columnsubscription_idcustomer_idcreated_atcancelled_atexpired_attrial_begin_attrial_end_atsignup_campaign_id
DescriptionThe unique identifier of a subscriptionA customer might have multiple subscription.Signup dateDate of the actual cancellation using website, customer support or other.Date when the subscription no longer has access to the product.
Example: (cancelled)000100101-01-202420-03-202401-04-202401-01-202431-01-202430-day-half-price
Example: (active)000200201-01-2024nullnullnullnullnull

Lifecycle event-based

This format usually consists of multiple tables, with a main event table being the most important to share with Subsets. The table in your data warehouse might be slightly different and more or less normalised.

Subscription_events: each row represents an event in the subscription lifecycle.

Columnsubscription_idevent_timestampevent_typeplanpricenext_billing_date_at
DescriptionThe unique identifier of a subscription.The timestamp of when the event happeneda fixed set of lifecycle events eg. signup, renewal, payment_failure, cancellation, upgrade, trial_started and expiration.What product is being subscribed to and on what terms.price billedDate of the next billing event
Example000101-01-2024CREATION2024-monthly9.9901-02-2024
Example000101-02-2024RENEWAL2024-monthly9.9901-03-2024
Example000101-03-2024PAYMENT_FAILURE2024-monthly9.9901-03-2024
Example000101-04-2024EXPIRATION2024-monthly9.9901-03-2024

Other

If your data follows a different format, share tables that allow us to track:

  1. When the subscription was created.
  2. Every renewal billing event.
  3. If and when a trial started and ended.
  4. If and when the subscription entered payment_failure.
  5. An upgrade/downgrade/crossgrade to a different subscription plan.
  6. When the subscription was canceled.
  7. When the subscription expired.

Ensure every table has a subscription_id and, if applicable, a customer_id.