Bulk import of existing customers and subscriptions

Import your existing customer base to Stigg using a dedicated tool or via our API

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' up-to-date 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
    },
    // ...
  ]

πŸ“˜

Please note that the import function is idempotent, hence will consistently yield the same result each time it is executed.

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.

Import using the API

You can also use our API to bulk import subscriptions and customers programmatically:

Import customers

Query

mutation CustomerBulkImport($input: ImportCustomerBulk!) {
  importCustomersBulk(input: $input) {  
    customers {
      {
        customerId
        email
        name
        billingId
        paymentMethodId
        additionalMetaData
        }
      }
    }
  }

Variables

{
  "input": {
    "customers": {
      {
        "customerId": "lorem-ipsum",
        "email": "[email protected]", // optional
        "name": "Lorem-ipsum", // optional
        "billingId": "cus_MvdQq1bVD1BQHe", // optional
        "paymentMethodId": "pm_1N04AHEdaKWoSZ0OgP78RflV", // optional
        "additionalMetaData": {
          "isTest": "true" // optional
        }
      }
    }
  }
}

Import subscriptions

Query

mutation SubscriptionBulkImport($input: ImportSubscriptionsBulk!) {
  importSubscriptionsBulk(input: $input) {  
  subscriptions {
    {
      customerId
      planId
      resourceId
      billingPeriod
      unitQuantity
      startDate
      additionalMetaData
        }
      }
    }
  }

Variables

{
  "input": {
  "subscriptions": {
    {
      "customerId": "lorem-ipsum",
      "planId": "plan-local-env-p-1",
      "resourceId": "site-1", // optional
      "billingPeriod": "MONTHLY", // optional
      "unitQuantity": 5, // optional
      "startDate": "2022-01-01T00:00:00.000Z", // optional
      "additionalMetaData": {
        "isTest": "true" // optional
        }
      }
    }
  }
}

πŸ“˜

This functionality is also accessible via the Node.js SDK using the ImportCustomerBulk and ImportSubscriptionBulk methods.