Integrations

Publish your Integration

Learn how to make your integration available to Churnkey.

Before following this guide, make sure that you have implemented all the required controllers and actions.

Get Integration Token

To obtain your Integration Token, go to the Churnkey dashboard -> Settings -> Billing Providers:

Quick start guide

Choose Custom Provider and copy the Integration Token:

Quick start guide

Never store your Integration Token in your codebase. Use environment variables or a secure vault to store it.

Make integration publicly available

First you need to create Integration instance, where you should pass your Context and all the controllers and actions you implemented.

import { Integrator } from '@churnkey/sdk'
import { Context } from './Context'
import { Customers } from './controllers/Customers'
import { Prices } from './controllers/Prices'
import { Subscriptions } from './controllers/Subscriptions'
import { Coupons } from './controllers/Coupons' // optional
import { Cancel } from './actions/Cancel' // optional
import { ApplyCoupon } from './actions/ApplyCoupon' // optional
import { ExtendTrial } from './actions/ExtendTrial' // optional
import { ChangePrice } from './actions/ChangePrice' // optional
import { Pause } from './actions/Pause' // optional

export const Integration = new Integrator.Integration({
    ctx: Context,
    name: 'YourCompanyName',
    modules: {
        controllers: {
            Customers,
            Prices,
            Subscriptions,
            Coupons // optional
        },
        actions: {
            Cancel, // optional
            ApplyCoupon, // optional
            ExtendTrial, // optional
            ChangePrice, // optional
            Pause // optional
        }
    }
})

Next, in your router file, you should expose the Integration to the internet. Authentication and features manifest are handled by the SDK, so you don't need to worry about it.

import express from 'express'
import { Integration } from './churnkey/Integration'
import { Context } from './churnkey/Context'

const app = express()
Integration.expose({
    app: app, // express app instance
    token: process.env.CK_INTEGRATION_TOKEN, // your integration token
    ctx(req, req) {
        return new Context(
            // initialize your context here
            // parameters can vary depending on your implementation
        )
    } 
})

If SDK is not available in your preferred programming language, you should follow this guide to make your integration available to Churnkey.

Features

You should add an endpoint which will return a list of supported features, we call it Feature Manifest. This manifest tells us what Controllers, Actions and their behavior are supported by your integration.

Authentication

Each request to your implemented endpoints will contain a Authorization header with a Bearer token. You should compare this token with your Integration Token, if they match you should consider request authorized.

Verify endpoints

Make sure that you implemented all required Controller and Action endpoints and your auth middleware is protecting them from unauthorized access.

Verify your Integration

Go to the Churnkey dashboard -> Settings -> Billing Providers. You should see that your Custom Provider is pending verification: Quick start guide

Add your API URL to the Custom Provider. This is your API root URL, we will append the endpoint with /churnkey prefix to it automatically: Quick start guide

Click on the Verify button to verify your integration: Quick start guide

You should see results and list of supported features soon: Quick start guide

Troubleshooting

If you see any errors during the verification process, the most common issues are:

  • Incorrect Integration Token
  • Incorrect data format (e.g. wrong Model implementation)
  • Incorrect endpoint implementation (e.g. wrong url or wrong response)
  • Features endpoint is not implemented

Generally, you should be able to fix most of the issues by following the error message you see. If you are still stuck, feel free to reach out to our support team, we are happy to help you.

Keep in mind that we're following modular architecture, so if one of the optional modules doesn't work, other modules should work fine.

Updating integration

Over time you may want to add new features or fix bugs in your integration.

We cache the Feature Manifest, so if your update includes changes to the Feature Manifest, you should re-verify your integration. If you only update the implementation, you don't need to re-verify it.

Manual verification

You can go to the Churnkey dashboard -> Settings -> Billing Providers and click on the Verify button to re-verify your integration.

Automatic verification

You can call the verify endpoint programmatically from your CI/CD or during the server start. This way, you can ensure that your integration is always up-to-date and verified.