Kickstarting your HubSpot developer journey
In the modern landscape of programming and development, there are many different languages, libraries, and frameworks. Each has its pros and cons, and every developer has favorites. In this article, we’re going to cover the different types of development one might encounter when building on or integrating with HubSpot’s platform. We’ll also take a closer look at what you should know, whether you are a new developer beginning your journey, a seasoned developer looking for a refresher, or simply looking to grow your career as a developer working with HubSpot’s Platform.
Looking for more? Find more key resources, dive deeper into features, and view training and learning resources on our Developer Tooling page
Building Integrations for HubSpot vs. Building Assets on HubSpot
When building on the HubSpot Platform, there are two paths a developer may travel. While these two paths can intersect with one another (such as CLI use or serverless functions being applicable to both CMS Hub and in CRM Cards), the skillset and things you should know can vary based on your end goal. Let’s review these paths in more detail.
The first path is building an integration with the HubSpot Platform. These integrations can take a few different shapes—such as using our APIs to add or supplement data in HubSpot, syncing HubSpot data into an external system, or extending HubSpot features like CRM cards and timeline events to let users view and manipulate your data while they work inside HubSpot. You can even add and customize workflow actions, allowing users to manipulate data through your integration while using HubSpot's powerful automation tools.
The second path for a developer is creating a website or web application on CMS Hub with a series of building blocks such as themes, modules, emails, or quotes —or even using data-driven content like serverless functions and GraphQL.
What you should know when building public or Private app integrations into HubSpot
Public and private apps function similarly when it comes to working with the HubSpot APIs. Both use OAuth access tokens to authorize requests to the API, and both use the same OAuth scopes to make sure that the apps and their tokens only have access to the specific data that's been approved. However, public and private apps have their own unique features that you should know about which can help you choose which app type to use for your particular needs.
Private apps are designed for custom integrations intended for use by a single Hubspot account. They're set up in that account, and the access token you get will never expire—so you don't need to worry about refreshing tokens. Private apps are a good solution for integrations built directly in HubSpot (such as custom-coded actions in workflows or serverless functions that need to make requests to the HubSpot APIs), but they can also be used with integrations hosted outside of HubSpot (such as on AWS).
Public apps, on the other hand, are a good solution for apps that will work with multiple HubSpot accounts. They're set up in a HubSpot Developer account, and can be connected to any number of HubSpot accounts. Public apps support one-click connections to a HubSpot account, making it easy for a user to connect your app without needing to manage the required scopes or copy and paste access tokens.
It’s also worth noting that if you want to be listed in the HubSpot App Marketplace, you'll need to create a public app. Some platform features, such as the Webhooks API or timeline events, also require that you use a public app.
What you should know when extending the CRM using CRM Cards
- Event Handlers
What you should know when building websites on HubSpot’s CMS Hub
For templating, CMS Hub makes use of the HubSpot Markup Language, referred to as HubL. HubL is an extension of HubSpot’s Jinjava language, which is a templating language based on Jinja. It’s important to note that HubL uses a fair amount of markup that is unique to HubSpot, and not all of Jinja’s features are supported. HubL also has its own predefined variables, functions, tags, and filters, while also allowing you to create your own custom variables and macros.
When building websites on CMS Hub, we also recommend having a basic understanding of:
- HTML - The standard markup language for the web as we know it.
- CSS - Used for presentational styling of your HTML.
- Accessibility (A11y) standards in web development - These web standards ensure inclusion and accessibility are implemented and prioritized for individuals who have a range of hearing, movement, sight, and cognitive abilities.
- HubSpot Themes - Themes are portable and contain collections of developer assets designed to enable a flexible content editing experience. You can further expand on themes with child themes .
- Search Engine Optimization (SEO) - We recommend checking out Ahref’s and Moz’s guides.
- A general understanding of website configurations, including (but not limited to):
- Connecting a domain (through pointing CNAME records in a DNS)
- Robots.txt files
- HubSpot’s website settings options
If you need some guidance to get up and running, take a look at our quick start guide for developing on CMS Hub .
Where can you go to upskill and learn more
There are many places across the web where you can begin upskilling on the languages, libraries, and frameworks we covered above. We’ve put together the following resource list to help you grow your career as a Hubspot Developer.
HubSpot Academy-based learning:
API and Application Development:
- Introduction to HubSpot API’s
- Getting started with HubSpot APIs
- Integrating external APIs
- Using OAuth with HubSpot
- Building Your First Web App
- Building a Basic Web App
- HubL: The Templating Language of the HubSpot CMS
- CMS Hub Implementation
- HubSpot CMS for Developers
- HubSpot CMS Best practices for Developers
- Other Data Sources: using HubDB and Custom Objects in CMS Hub
- A developer overview of HubSpot CMS Themes
- Overview of modules in the HubSpot CMS
General web development learning resources:
Best Practices in web development
HTML & CSS