Nango is product integration infrastructure for developers. It helps you build, manage, and scale integrations with third-party APIs, through a single interface.

Demo video

Nango overview

Nango provides a unified interface to work with 250+ APIs, abstracting away the complexities of each API. This allows you to focus on building your product, rather than dealing with the intricacies of each API.

Nango differs from traditional unified APIs & embedded iPaaS as it is designed to be developer-first, with unlimited customization capabilities, offering a alternative to building and maintaining integrations in-house. It is meant to never constrain the integrations you can build, while providing a unified interface to work with different APIs.

Nango offers a suite of tools & services to help you build integrations faster, including:

  • Pre-built integrations with 250+ APIs
  • Developer tooling to build custom integrations with a unfied interface
  • A service of API experts who can advise and build integrations for you

Overview of integrating Nango

The steps to integrate Nango.

1. Get user permission in your app

Use the Nango frontend SDK to get the user’s permission to access their external data.

Nango guides the user through the (O)Auth flow in a popup window.

Store the connectionId & integrationId in your database to retrieve the user’s data later.

Frontend: Trigger the OAuth flow.
const nango = new Nango({ connectSessionToken });

// Shows authorization popup to the user.
await nango.openConnectUI({
    onEvent: (event) {
        if (event.type === 'connect') {
            // The auth flow succeeded. The user is connected!
            saveToDatabase(connectionId, integrationId);
        }
    }
});

When a new user connects your integration, Nango automatically starts fetching their data (e.g. issues, contacts, files, etc.) in the background.

2. Receive data update notifications

Nango uses webhooks to notify your backend when external user data has been added, updated or deleted. Nango will only alert you when there are actual changes.

Backend: Webhook payload with new data
{
    "connectionId": "user123",
    "providerConfigKey": "zendesk",
    "model": "ticket",
    "responseResults": { "added": 2, "updated": 6, "deleted": 0 },
    "modifiedAfter": "2023-05-31T11:46:13.390Z"
}

3. Collect and save the new data

When you receive the webhook, fetch the most recent data from Nango using the backend SDK or API.

Nango returns the data in the schema of your choice, which can be standardized across different APIs.

You can directly save this data to your database, or process it further, as needed.

Backend: Fetch & save new records.
const records = await nango.listRecords<Ticket>({
    providerConfigKey: 'zendesk',
    connectionId: 'user123',
    model: 'ticket',
    modifiedAfter: modifiedAfter
});

saveToDatabase(records);

4. Write back to external APIs

Push updates back to external APIs in a way that is:

  • Synchronous: Have your changes immediately reflected.
  • Unified: Benefit from standardized schemas across different APIs.
  • Customizable: Support intricate workflows and composed API calls.
Backend: Write back to external APIs.
const result = await nango.triggerAction({
    providerConfigKey: 'zendesk',
    connectionId: 'user123',
    action: 'create-ticket',
    input: { "title": "...", "content": "..." }
});

5. Customize integrations

Nango lets you create custom integrations through code. Your custom integration code is then deployed and run by Nango, similarly to lambda functions:

Nango offers developer tooling to make custom integrations easier to build and maintain, abstracting API specificities into a unified interface to work with pagination, rate limits, and other API quirks.

Questions, problems, feedback? Please reach out in the Slack community.