Skip to content

Importing Subscriptions

Early Access Preview

Subscription importing is currently available as an early access preview. Contact support to get access enabled for your store.

If you have existing wine club members — whether from a spreadsheet, another platform, or a manual wine club — you can import them into the app so they don't have to sign up again individually.

The import creates active subscriptions with future billing dates, so customers are not charged during the import. They continue on their existing billing schedule and are charged automatically when their next billing date arrives.

Before You Import

Before starting an import, make sure:

  • Your clubs are set up — The clubs and frequency/case size combinations you want to import members into must already exist. See Setting Up Your Wine Club.
  • Products are prepared — The products and variants for each club must be available. See Preparing Your Products.
  • Your plan has capacity — Your billing plan limits the number of active subscriptions. The import will not proceed if it would exceed your plan's limit. You can check your current usage on the Dashboard.

Warning

Live imports cannot be undone automatically. If you need to reverse a live import, you'll need to cancel each imported subscription individually. The app runs a test import first so you can check for errors before anything is created.

Preparing Your CSV File

The import uses a CSV (comma-separated values) file. You can create this in any spreadsheet application (Excel, Google Sheets, etc.) and export as CSV. Each CSV can contain up to 100 subscriptions.

We recommend importing one club type at a time — all Choose Your Own subscriptions in one CSV, and all Curated subscriptions in another.

Double-check the email column

The customer's email address is how they sign in to the customer portal and how they receive every wine club email. An incorrect email blocks both, and can only be corrected in Shopify after the import — review the email column carefully before importing.

Select your club type below to see the CSV format and download a template.

Download the template CSV to get started. Open it in Excel or Google Sheets, fill in your data, and export as CSV.

For subscriptions with multiple products (line items), use one row per product. The first row for a handle must include all subscription details along with the first product. Subsequent rows with the same handle only need the handle and line item columns — all other columns are ignored on continuation rows.

Column Description Example
handle Groups rows into one subscription — all rows with the same handle belong to the same subscription sub-001
email Customer's email address jane@example.com
first_name Customer's first name Jane
last_name Customer's last name Smith
club_group Club group name (must match an existing club group) Premium Reds
club Club name — the specific frequency and case size offering (must match an existing club) 6 Bottles Quarterly
next_billing_date Next billing date in YYYY-MM-DD format. Interpreted as midday in your store's timezone. Must be at least 48 hours in the future and no more than one billing interval ahead — up to 1 month for monthly clubs, 3 months for quarterly, 6 months for 6-monthly, and 12 months for annual. 2026-07-01
delivery_method Delivery method: shipping, local_delivery, or pickup shipping
delivery_price Delivery price (use 0 for pickup) 15.00
address1 Street address 42 Vine Street
address2 Apartment, unit, or suite number (optional)
city City or suburb Barossa Valley
province_code State or province code SA
country_code Two-letter country code AU
zip Postal or ZIP code 5352
phone Phone number in international format +61400000000
company Company name (optional)
line_product Identifies the wine for each line item. You can use either:
  • SKU (e.g., SHIRAZ-2023) — recommended if your products have SKUs configured in Shopify
  • Product name (e.g., 2023 Barossa Shiraz, or 2023 Barossa Shiraz - Magnum for multi-variant products)
SKU is checked first. If no SKU match is found, the system matches by product/variant name. If multiple products match the same name, you'll be asked to use SKU instead.
SHIRAZ-2023
line_quantity Quantity of this product 3
line_price The discounted price per unit that the customer is billed each cycle. If this is below the variant's retail, the difference is recorded as the per-cycle discount and shown alongside retail in the customer portal. 25.00
note Order note for all future orders (optional)
total_price Expected total — the importer warns if this doesn't match the sum of (line quantity × line price) plus delivery price, but doesn't block the import. 180.00
currency_code Three-letter currency code. Must be enabled on your store, and the products must have retail prices configured for the row's country in that currency. AUD

Download the template CSV to get started. Open it in Excel or Google Sheets, fill in your data, and export as CSV.

Each subscription is a single row. Product selections are determined by the club configuration — you don't specify products in the CSV.

Column Description Example
email Customer's email address jane@example.com
first_name Customer's first name Jane
last_name Customer's last name Smith
club_group Club group name (must match an existing club group) Curated Selection
club Club name — the specific frequency and case size offering (must match an existing club) 12 Bottles Monthly
next_billing_date Next billing date in YYYY-MM-DD format. Interpreted as midday in your store's timezone. Must be at least 48 hours in the future and no more than one billing interval ahead — up to 1 month for monthly clubs, 3 months for quarterly, 6 months for 6-monthly, and 12 months for annual. 2026-07-01
delivery_method Delivery method: shipping, local_delivery, or pickup shipping
delivery_price Delivery price (use 0 for pickup) 20.00
address1 Street address 42 Vine Street
address2 Apartment, unit, or suite number (optional)
city City or suburb Barossa Valley
province_code State or province code SA
country_code Two-letter country code AU
zip Postal or ZIP code 5352
phone Phone number in international format +61400000000
company Company name (optional)
note Order note for all future orders (optional)
total_price Expected total — the importer warns if this doesn't match the discounted line subtotal plus delivery price, but doesn't block the import. The discounted line subtotal is computed automatically from the club's curated wines and the combination's discount percentage. 270.00
currency_code Three-letter currency code. Must be enabled on your store, and the curated wines must have retail prices configured for the row's country in that currency. AUD

Pricing and discounts

Imported subscriptions are recorded with the same pricing details as new signups taken through your storefront. Each line stores both the retail price and the discounted price the customer pays, so the customer portal can show the discount and the strikethrough retail clearly.

  • Choose Your Ownline_price is the price billed each cycle. If it sits below the variant's retail, the difference becomes the per-cycle discount on that line.
  • Curated — the discount is applied automatically from the club's settings. You don't need to pre-calculate per-line prices.
  • Total reconciliation — if total_price doesn't reconcile with the discounted line subtotal plus delivery, you'll see a warning in the test import results. The row still imports.

Multi-currency

If the row's currency_code differs from your store's primary currency, each variant in the row's club must have a retail price configured for the row's country in Shopify Markets. Rows that reference variants without a market-priced retail in the chosen currency will fail with a clear message in the test results.

Starting an Import

Importing runs in two steps: a test import checks your data first without creating anything, then a live import creates the subscriptions once you're happy with the results.

  1. Go to Subscriptions in the app
  2. Click Import at the top of the subscription list (or Import existing subscriptions from the empty state)
  3. Upload your CSV file
  4. The app runs the test import and shows the results

Validation

The app checks every row before creating anything — there are no partial imports. If a row has an error, you'll see a clear message explaining what to fix. Rows that are duplicates (same customer and club) are skipped automatically rather than treated as errors.

Info

If the import would exceed your plan's subscription limit, you'll see a message with your current count and plan's cap. Upgrade from the Billing settings screen before starting your import.

Test Results

After the test import runs, the app shows Test import results — no subscriptions have been created yet. Each row is labelled:

  • Will import — Passed all checks, ready to go live
  • Will skip — Duplicate row, will be skipped
  • Won't import — Has an error; fix it in your CSV and start over

Each row also shows whether the customer is new to Shopify, an existing customer, or already a subscriber.

If everything looks correct, scroll down and click Start live import. If anything needs fixing, click Start over to upload a corrected CSV.

Warning

Once the live import starts, it can't be stopped or undone.

The app creates each subscription as Active with the billing date you specified. No charges are made during import — billing begins on each customer's next billing date once they've added a payment method (see Payment Methods below).

Note

You can navigate away while the import is running. It continues in the background and you can return to check progress at any time.

When the import finishes, the screen shows counts for Imported, Failed, and Skipped rows, with a row-by-row breakdown including products and billing frequency.

After Import

Payment Methods

Imported subscriptions are created without a payment method unless the customer already has one saved against their Shopify account, in which case the app attaches it automatically. Payment details cannot be transferred from another system, so any imported customer who does not already have a saved card in Shopify needs to add one before their first billing date.

Prompting customers after import

Once the import completes, open the Subscriptions list and review the Has Issues tab. Most entries here will be imported subscriptions that do not yet have a payment method on file. Select these subscriptions and use the Send add payment method email bulk action to prompt the customers to add one.

We recommend doing this soon after the import so customers have plenty of lead time to add a payment method before their first billing date.

Automatic pre-billing reminders

The standard pre-billing reminders sent 14 days and 2 days before each billing date also prompt customers to add a payment method when one is missing. They act as a backup for any subscriptions you haven't emailed yourself.

Communicate outside the app too

We also recommend telling your subscribers about the migration through your usual direct channels — for example an email newsletter or SMS — after the import. Letting them know that their membership has moved and that they need to add a payment method helps avoid confusion when they receive automated emails from the app.

How customers add a payment method

The "Add a payment method required" email — and the no-payment-method copy on the standard pre-billing reminders — all link the customer to their subscription page in the customer portal. From there, an Add payment method button takes them directly to the Shopify customer account profile screen to add one.

Customers can also add a payment method themselves from their Shopify customer account at any time:

  1. Log in to their account on your store
  2. Go to Profile > Payment methods
  3. Click Add and enter their payment details

Once a customer adds a payment method, it is automatically linked to their imported subscription.

First-time login for imported customers

Imported customers don't need a setup link or password — Shopify's customer accounts use passwordless sign-in (email + a one-time 6-digit code) and provision the account automatically the first time the customer signs in. The links in any of our emails take them through this flow before landing on their subscription page. See Logging in for the full flow, or Shopify's Customer accounts documentation for background on the sign-in options available to your customers.

What Happens at Billing Time Without a Payment Method

If a customer's billing date arrives and they haven't added a payment method:

  • The billing attempt will fail
  • The customer receives an email notification about the failed payment
  • The app's standard payment failure retry schedule applies
  • After all retries fail, the subscription is placed on hold (Failed status)
  • The customer can add a payment method and reactivate from the customer portal

Managing Imported Subscriptions

Imported subscriptions work exactly like any other subscription. You and your customers can:

  • Pause, resume, or cancel
  • Skip orders
  • Change items (Choose Your Own clubs)
  • Update delivery address
  • Update payment method

See Managing Subscriptions for the full list of actions.

Limitations

  • No automatic payment method transfer — Customers must add their card details themselves. There is no way to transfer payment information from another system into Shopify.
  • One import at a time — You cannot run multiple imports simultaneously.
  • No undo — Imported subscriptions must be cancelled individually if you need to reverse an import.
  • Billing date must be at least 48 hours in the future — Each next_billing_date is interpreted as midday in your store's timezone and must be at least 48 hours away, so the customer's 2-day upcoming renewal reminder fires at least once before the first billing attempt.
  • Billing date is capped at one interval ahead — Each next_billing_date must be within one billing interval of the import (1 month for monthly, 3 for quarterly, 6 for 6-monthly, 12 for annual).
  • Pickup location is auto-selected — For pickup subscriptions, the app queries Shopify for available pickup locations based on the customer's address and product availability, then automatically selects the first available option. The selected location is shown in the import results. If no pickup location is available for the address, that row will fail during import. After import, you can change the pickup location from the admin or customers can change it from the customer portal.