Importing existing customers and subscriptions into Stigg in bulk

Motivation

In case you integrate with Stigg while having existing customer base, you might want to import your existing customers into Stigg.

We prepared a CLI tool that manage the import process:

  • It reads the list of customers to import from a JSON file.
  • It's idempotent - feel safe to re-run it.

Usage

Prerequisites

Preparing the input JSON files

The CLI support import data of customers, subscriptions and feature usage into Stigg.

Import customers

Create a file customers.json that contains all the customers.

The file should be in the following schema:

{
  "customers": [
    {
      "customerId": "lorem-ipsum",
      "email": "[email protected]", // optional
      "name": "Lorem-ipsum", // optional
      "billingId": "cus_MvdQq1bVD1BQHe", // optional - if the customer already exists in the billing solution
      "paymentMethodId": "pm_1N04AHEdaKWoSZ0OgP78RflV", // required for paid customers
      "metadata": { // optional - set metadata for the customer
        "isTest": "true"
      }
    },
    // ...
  ],
}

Import subscriptions

Create a file subscriptions.json that contains all the subscriptions.

The file should be in the following schema:

"subscriptions": [
    {
      "customerId": "lorem-ipsum",
      "planId": "plan-local-env-p-1",
      "resourceId": "site-1", // optional - required for multiple subscriptions product
      "billingPeriod": "MONTHLY", // optional - required for paid plan
      "unitQuantity": 5, // optional - required for per-unit paid plan
      "startDate": "2022-01-01T00:00:00.000Z", // optional - used for backdating
      "metadata": { // optional - set metadata for the subscription
        "isTest": "true"
      }
    },
    // ...
  ],

Import feature usage

Create a file usage.json that contains all the features usage.

The file should be in the following schema:

  "usages": [
    {
      "customerId": "lorem-ipsum",
      "resourceId": "site-1", // optional - required for multiple subscriptions product
      "featureId": "feature-seats",
      "usage": 5
    },
    // ...
  ]

Initiating the bulk import process

Obtain a Server API key from the Stigg Console.

Export it as environment variable:

export STIGG_SERVER_API_KEY='<SERVER-API-KEY>'

Initiate the bulk import process (you can either import all at once or do it separately):

npx @stigg/bulk-import --customers-file customers.json --subscriptions-file subscriptions.json --usage-file usage.json

During the import process there will be a progress bar.

When the import process is complete a summary will be displayed.