left arrow Back to posts

Sequin vs Heroku Connect

Eric Goldman
4 min read
main image of the article

We’re Sequin. We let you build apps and workflows on top of APIs like Salesforce and GitHub using just SQL and Postgres. Changes in the API sync to your database and changes in your database sync to the API. It's like Heroku Connect, but taken to the next level. This post describes the differences.

What is Heroku Connect?

Heroku Connect is an add-on that synchronizes data between Salesforce and a Heroku Postgres database.

Developers use Heroku Connect to integrate with Salesforce. It's an alternative to using the REST API or to integration platforms like Mulesoft.

What is Sequin?

Sequin is a new alternative to Heroku Connect. Like Heroku Connect, Sequin lets you interface with your Salesforce data using SQL.

As with Heroku Connect, Sequin lets you map Salesforce objects and fields to tables and columns in your Heroku Postgres database. This includes all standard and custom Salesforce objects. Then, you can select from your Salesforce tables, as well as insert, update, and delete.

How are they different?

In Sequin, writes are synchronous

When you insert, update, or delete a record in Heroku Connect, those changes are propagated asynchronously to Salesforce. Heroku Connect queues the changes and pushes them to Salesforce after an indefinite period of time.

With Sequin, all changes are synchronously applied to Salesforce first. Only if those changes succeed are they applied to your database. Otherwise, Sequin rolls back the changes and returns the Salesforce error to you as a Postgres error.

This seemingly small difference has big implications:

1. Every write is validated

With Heroku Connect, none of Salesforce's business rules are applied to your database transactions. So, if a write fails Salesforce's validation, you now have an inconsistent state between your database and Salesforce. Moreover, it's hard for your application logic to know that an error happened. To find out if a particular insert, update, or delete failed, your code has to "check back later" and dig up the error (e.g. query the _trigger_log or _hc_err column).

In other words, in Heroku Connect, pretty much all mutations to Postgres will succeed, regardless of whether they ought to succeed according to Salesforce!

By contrast, in Sequin, Salesforce's business rules are applied to every mutation. Inserts, updates, and deletes must flow through Salesforce first. This means Salesforce and the database never get out-of-sync. And this makes it easy to capture and propagate validation errors in your application.

2. All records in your database are in Salesforce

Synchronous writes also mean that you never have records in an "intermediate" state where they are waiting to get synced to Salesforce for the first time. Because the write to Salesforce happens inside the database transaction, records are only written to the database if they've been written to Salesforce.

That means every record has a Salesforce ID as well as populated computed fields. You no longer need to deal with a bunch of NULLs as you wait for records to sync up to Salesforce.

Sequin is not tied to Heroku

Sequin supports any Postgres, not just Heroku Postgres. You can use a Postgres database hosted on AWS, GCP, Azure, or elsewhere.

Sequin is priced based on the records you actually use in Salesforce

Salesforce instances can get very large. But often, only a fraction of Salesforce records change in a given month. There are only so many "active" Opportunities, Contacts, or Accounts at any time.

Heroku Connect charges based on the size of your entire Postgres database. By contrast, Sequin charges based on actual usage–the records inserted, updated, or deleted within the past month.

Sequin gives you more control

Heroku Connect offers basic configuration and customization.

Meanwhile, Sequin offers a lot of configurability, including precise rate limit controls and schema configuration.

Sequin has an event stream

Often, teams need to trigger workflows or call internal functions when data changes in Salesforce. For example, when a new Contact is created, you might want to trigger a workflow to send an email, ping an account manager in Slack, or provision resources internally.

While you can capture changes in Postgres, it's not straightforward. Sequin comes with an event stream that contains every insert, update, and delete that's happened in Salesforce. You can consume events in various ways: directly via Kafka, via a REST API, or receive them via webhooks.

Heroku Connect does not have a way to capture events.

Sequin is growing and we're actively working on it

The last difference makes the biggest impact in the long run: Sequin's journey is just getting started. Our current feature set is where we're starting, not where we're ending. Our platform gets better every month, and we're constantly adding new features that our customers ask for.

Meanwhile, it seems like Heroku Connect is being stewarded along in maintenance mode. It's been years since the last update. There have been rumors that Heroku itself may sunset someday soon.

How do I migrate from Heroku Connect to Sequin?

Ready to make the switch and experience the difference?

To migrate from Heroku Connect to Sequin, you'll export a JSON config file from Heroku Connect and import it into Sequin. We'll then backfill your data, and you'll be up and running on a Sequin sync.

You can try Sequin for free. If you'd like enterprise-level support or have questions about setting up your sync, please send us a note.