Skip to main content

HubSpot Reference

HubSpot database schema

Your Sequin database will contain tables for each of the following HubSpot objects:

  • Company
  • Contact
  • Deal
  • Line item
  • Owner
  • Product
  • Quote
  • Ticket

We're also able to sync any of your custom objects.

Need additional objects in your sync? Just send us a note. We can typically add newly requested HubSpot objects in a day or two.

The syncing process

By default, we limit our sync to one request every three seconds. This means about 20 request per minute or 29,000 requests per day. We use these limits to stay well below your daily API quota. If this isn't the right rate limit for you, send us a note.

We first backfill your database with all your HubSpot data. We're able to pull 100 records per request. This means, by default, we can process just over 120,000 records per hour. We'll email you when your backfill is complete and all your data is loaded into your database.

After the initial backfill, we'll continuously poll your HubSpot instance to monitor changes. Respecting the rate limit, we'll round-robin each of the tables you've selected to sync. We're able to handle up to 200 creates and updates across your tables every three seconds. So if you're syncing five tables, we'll be able to process up to 1,000 creates and updates between those five tables every 15 seconds.

Writes

Your Sequin database is read-only.

We advocate for a one-way data flow: read from your Sequin database, write to HubSpot's API. Any changes will flow down to your Sequin database for you to read again.

Sometimes, you want to make sure that changes that you just wrote has been synced to your database. We call this scenario a read-after-write.

To do so, you can call our wait endpoint. To find the URL for your sync's wait endpoint, just click "Connect" in the Sequin console. Wait endpoints take this form:

https://api.sequin.io/api/wait/:id

Where kind is the platform, like hubspot. id is the Sequin ID of your sync.

A wait endpoint only returns after we've confirmed your database is up-to-date. So, you can weave it into your workflow like this:

  1. Make a write request directly to the API
  2. Call your sync's wait endpoint
  3. When #2 completes, read from your Sequin database

Here's an example curl request to a wait endpoint on Sequin:

> curl https://api.sequin.io/api/wait/0f062f20-ac57-4c00-8e69-cfb1cbcfdd5f
< { "ok": true }

Note: The wait endpoint is in alpha and experimental. We may add additional properties to the response in the near future.

Security

Your Sequin database will contain all your HubSpot data - which includes PII and sensitive information. We take the security of that data seriously.

Please read about our full security practices. Here is a short synopsis of how we keep your HubSpot data secure:

  • You supply us with an API key which is encrypted at rest. The Sequin application database is only accessible through a bastion host.
  • We only access customer databases by request or to diagnose a sync issue.
  • Sequin workers first backfill your database with all your HubSpot data. During this backfill, Sequin will receive events as they happen to keep your data in-sync.
  • Data flows directly from HubSpot, through Sequin workers, to your database. We don't cache or store HubSpot data anywhere else.
  • We use Sentry and Datadog for error monitoring. Sometimes errors Datadog catches will contain API response data. But these are minimized and our logs in Datadog have a shelf-life of 30 days.
  • By default, Sequin provisions a private database and a database user for you on a shared RDS instance. While Sequin shared instances are secure, we can also sync to a database you own for greater peace of mind.