Overview

Membrane Documentation

Membrane makes your software talk to anything else. This documentation describes how.

Getting Started

To get started, pick your use case:

Ways to Use Membrane

Membrane is fully programmable and API-first. All functionality is accessible through multiple interfaces:

How Membrane Works

All interactions with external apps fall into three main categories:

Connect — Authenticate with an external app (OAuth, API key, etc.) to be able to talk to it. This creates a Connection — an authenticated link that Membrane keeps alive, refreshes tokens for, and reconnects on failure.

Act — Take Actions in the connected app: create a contact, send a message, list invoices, update a deal. Actions run on top of connections and use them for authentication. Actions can be anything from a simple API request to a complex multi-step workflow.

React — Subscribe to changes in the connected app via Events. Membrane detects new records, updates, and deletions via webhooks or polling, and delivers them to your backend.

Multi-tenancy

If you're using or building a product where multiple people connect their own apps, use Tenants to isolate their connections and data.

Each tenant has their own list of connections and a full set of integration settings. Tenants cannot access each other's data. Each tenant is identified by tenantKey - an arbitrary string you provide that usually corresponds to a unique identifier on your side. Membrane knows which tenant to use for each interaction based on Membrane Token you generate. See Authentication for details.

Membrane Layers

Membrane elements like actions and events can be defined at three levels of specificity:

LayerScopeExample
UniversalWorks across any app"Create Contact" action that works with any CRM
IntegrationOne specific appHow "Create Contact" maps to HubSpot's API — an implementation of the universal element
ConnectionOne specific connectionCustom field mapping for a particular HubSpot account — a customization of the integration element

This is useful when you want to create standard integration logic that works across many connections or apps and only define differences for each app/connection when they appear. This allows your code operate on abstract layer and let Membrane resolve it to the correct configuration for a given app and connection.

Managing Membrane