System Architecture

Fusebit is a code-first integration platform that enables application developers to easily add integrations to their solutions.

Our product enables developers like you to quickly add integrations to an application using powerful API building blocks. It takes away the pain of developing against many disparate APIs while maintaining the flexibility and familiarity of a code-first platform. Just like Stripe solves payments for application developers, Fusebit solves integrations.

The Problem

In today's world of inter-connected SaaS, no single product exists as an island. Most web applications need to connect to adjacent solutions to enable their customers' end-to-end workflows. For example, a task management or productivity product will likely need to inform its users of changes and items due via Slack. A payroll product might need to synchronize the employee list with an HR system. Most developers today implement these integrations manually in their application backend code, which requires a substantial engineering investment and can cause a maintenance burden down the line.

Figure 1. The integration problemFigure 1. The integration problem

Figure 1. The integration problem

A subset of the challenges we hear about:

  • Each third-party implements authentication slightly differently
  • The developers takes on the burden of managing and renewing authentication tokens for each user of their system
  • Scalability can be a challenge and potentially destabilize the core product
  • Enabling the right level of customization by end-users requires substantial investment
  • Health monitoring is frequently overlooked, leading to frequent outages

Fusebit addresses these challenges in a single embeddable platform.

Fusebit's Solution

Fusebit's platform sits in between your application and the third-parties you seek to integrate with, and lets you externalize and centralize the integration burden, while implementing scalability and maintainability best practices along the way

Figure 2. Fusebit's SolutionFigure 2. Fusebit's Solution

Figure 2. Fusebit's Solution

Integrations and Connectors

Inside Fusebit's system, you will notice two core concepts: IntegrationIntegration - An integration is the place the you write your code to get things done! Written in NodeJS, an integration runs in Fusebit's secure and scalable environment to translate between the needs of your backend application and the remote service or services you're connecting to.s and ConnectorConnector - A connector is the package from Fusebit that manages the relationship between one or more integrations and a specific service. One of the most common types of connector is an OAuth connector, which takes care of the OAuth negotiation between your customers and the service you're integrating, so that you don't have to!s.

  • Integrations are projects you create in Fusebit for a specific integration task, whether that involves one or more integration targets (usually the former). An example might be an Integration that listens for changes in your system and publishes them to Slack.
  • Connectors are system-level entities in Fusebit that manage the all communication to a third-party on behalf of your application. An Integration can reference one or more Connectors, although the former is most common.

Installation Lifecycle

When a user installs an integration, an InstallInstall - An install is a configured integration with a set of identity's and other values that represent a single user of the integration. You can search for instances by tags or by the special value of a Tenant (shh - it's also a tag, but don't tell anyone!). is created in Fusebit's system to capture any parameters associated with that install. Also, if it is the first time that this specific third-party system user is authenticating to your Integration, an IdentityIdentity - An identity is a unique relationship one of your customers has with a service. An identity can be used by multiple integrations to act on that service on behalf of your customer. will be created in the Connector associated with that Integration to track the user. This allows you to potentially have multiple Integrations using the same Connector and saving your users from having to log in repeatedly.