Automatically Update Currency Exchange Rates for Hubspot Products

Hubspot Logo with Currency EUR flowing to Make.com (Formerly Integromat) then Currency USD Flowing Back to Hubspot

Hubspot Multi Currency Exchange Rates

Multi-currency for deals is a handy feature... there's just one little annoyance, Hubspot doesn't have an in-built feature to automatically update additional currencies based on active exchange conversion rates.

Updating this information is very simple and easy, but in requires periodically checking the exchange rates and inputting those figures in Hubspots alternate currencies manually. A small task, but one that most people agree should happen automatically. Without someone tasked to check and update this information on a regular basis it's easy to progress a deal or raise an invoice for a client and present the wrong price because of outdated rate conversion.

Fortunately their is a fix.

As of the time writing this, it's not possible to update the currency conversion rates in Hubspot at the account level, but IT IS possible using the products API to update the rates on all products in the account using up to date exchange rate data.

This Examples Multi Currency Requirements

In this solution, we're working with 3 currencies, the account currency of Euros (EUR), plus US Dollars (USD) and Pound Sterling (GBP) as additional currencies.

There are 15 total products, each needing a price in all 3 currencies. We'll be updating the currencies twice a month, on the 14th and the 28th of the month, but you can set whatever interval makes sense for you.

​​In addition, there's a field "Non-Euro Price Last Updated" so we can see how recently our prices have been updated. As we're updating on two specific dates every month this isn't necessary but is good to have if the update times are not set to a calendar dates (i.e. every 7 days instead of the xth day), or your Hubspot users aren't aware of the update schedule.

Hubspot Product Multi-Current Price Fields
Hubspot Product Multi-Current Price Fields

The Building Blocks

What you'll need:

  • A Make.com (Formerly Integromat) account (Any Plan)
  • (Optional) Access to a currency conversion API if you choose not to use the Make.com (Formerly Integromat) in-built conversion module displayed below. There may be better exchange APIs available that report more accurately and/or more frequently than the in-built module that better fits your needs.
  • An active Hubspot API Key

What your finished scenarios will look like:

Overview of Integromat Scenario to Automatically Update Currency Exchange Rates for Hubspot Products
Overview of Make.com (Formerly Integromat) Scenario to Automatically Update Currency Exchange Rates for Hubspot Products

​There are 4 Modules

  • Module 1: The starting module will fetch all products at the interval specified.
  • Modules 2 & 3: These modules take in the value of the products from step 1 and output the exchange rate for the given currencies, and the newly converted amount based on that exchange rate applied to the original product value.
  • Module 4: Taking the new product values created in steps 3 & 4, this module "Update All Product Prices" uses the Hubspot Products API to patch (Update) the existing products with new price properties.

Creating Your Make.com (Formerly Integromat) Scenario

Module 1 - The Starting Trigger - Fetch Hubspot Products

  • Create a new scenario. Select the starting module as "Hubspot", and starting trigger "Search for CRM Objects".
  • Select "Object Type to Search" as "Products" and set the limit to large enough to pull the number of products in your account, in our case we have 15 products so 20 it enough.
  • For Output Properties select: "Name", "Object ID", "Your product currency fields" (In our example we need: Price EUR, Price GBP & Price USD), & "Non-Euro Prices Last Updated" (Optional as mentioned earlier).
Showing Integromat Scenario Hubspot Product Fetch Module Options
Hubspot Product Fetch Module Options

Modules 2 - Converting between different currencies

  • Add module, then search for and select the module "Currency"
  • (Optional) if you'll like to use a third-party exchange/currency conversion API resource at this point select the module "HTTP" and the appropriate request option according to your solutions API requirements.
  • In the "Amount" field insert Price field variable from module 1 that matches the base currency of your Hubspot account (in our example, this is "Properties: Price EUR")
  • Select the "Input Currency" as your Hubspot accounts base currency (this should match the currency of the variable selected in the previous step).
  • Select the "Output Currency" as the currency you wish to convert your base currency to.
Showing Integromat Scenario Currency Conversion Module options
Currency Conversion Module options

Modules 3 - Converting between different currencies

  • Repeat the steps for module 2 as many times as necessary to add all the currencies you wish to make conversions for. In our case we need 1 additional module, module 3, that converts Euros (EUR) to British Pound Sterling (GBP).

Module 4 - Updating Hubspot products with newly converted price information

  • First, grab your Hubspot API key. To find this, in Hubspot go to Settings > Integrations > API Key.
Settings sections in Hubspot showing where to find API Key
Where to find your Hubspot API Key
  • In your Make.com (Formerly Integromat) Scenario select the Hubspot module "Make an API Call".
  • Here we need to configure out API query to be able to update all our products. For information on the Products API and to test your query you can check out the documentation here.
  • Select "Object Type to Search" as "Products" and change set the limit to large enough to pull the number of products in your account, in our case we have 15 products so 20 it enough.
  • Select your Hubspot connection.
  • For "URL" we're using the Products Update endpoint "/crm/v3/objects/products/{productId}" to patch (i.e. update) our products.
  • In the "URL" field enter "/crm/v3/objects/products/{productId}" and replace {productId} with the variable "ID" from module 1.
  • For "Method" select "PATCH".
  • Header will be pre-populated with "Content Type: Application/json" which is what we want.
  • Leave "Query String" blank.
  • For "Body", we need to pass the information we're using to update our products. For this we need the Hubspot field IDs of the various product price fields we need to update.
  • To find these simple run module 1 to fetch your products from Hubspot. Right click module 1, and select "Run this module only".
Showing how to run a select module in Integromat Scenario
How to run a select module in Make.com (Formerly Integromat) Scenario
  • Once, click the bubble above the module to 1. Open The Data View, 2. View Bundle Data, then 3. View Output Bundle.
Showing where to access Hubspot product data fetch output data in Integromat Scenario
Where to access the Hubspot product fetch modules output data in Make.com (Formerly Integromat) Scenario
  • In the Bundle Content View, we can look into "Properties" and find the Hubspot Field IDs of our products, that follow the syntax "hs_price_xxx".
Showing Integromat Scenario Hubspot Product Fetch Modules Output Data in JSON format
Hubspot Product Fetch Modules Output Data in JSON format
  • With our Product IDs in hand we can fill out the data for module 4 Hubspot API Call "Body" field and replace both PRODUCT_PRICE placeholder with the newly converted products prices, and also replace DATE with the current date in the correct format.
Showing Hubspot API Call modules body section with JSON object for updating Hubspot Price properties
Hubspot API Call modules body section with JSON object for updating Hubspot Price properties
  • In our example, we've used the product price variables from the conversion modules 2 & 3 to insert the newly converted prices in place of the two PRODUCT_PRICE placeholders.
Showing Hubspot API Call modules body section with JSON object for updating Hubspot Price properties including variables from previous modules
Hubspot API Call modules body section with JSON object for updating Hubspot Price properties including variables from previous modules
  • Now we need to add a variable to fill out our field "currency_exchange_prices_updated". In our setup, the Hubspot field is Field Type "Date Picker" and so requires the date to be in the format "YYYY-MM-DD".
  • As the date input variable from Make.com (Formerly Integromat) comes in ISO 8601 format "YYYY-MM-DD HH:MM:SS.msmsms" we need to use the function "formatDate" to change this to "YYYY-MM-DD".
Showing Hubspot API Call modules body section with JSON object for updating Hubspot Price properties including variables from previous modules
Hubspot API Call modules body section with JSON object for updating Hubspot Price properties including variables from previous modules and formatted date insertion

Finally, lets set our update schedule.

  • On module 1 select the clock icon.
  • In "Run Scenario" select the type of interval you'd like to use. For our example we're using "Specific Dates".
  • Because we're using specific dates we have the options to select specific months and dates. We've left "Months" clear and this will run every month, in "Days" checked "14" & "28", and select "Time" "00:00".
  • Now we're finished.

It's important you test your build to check everything is working.

We haven't shown it in this guide but we tested each module as we added them to ensure they were returning the correct information, then performed a complete end-to-end test with a full update of all products to check the whole flow works as expected.

With all that done and working, we can now turn on our scenario and let it work it's magic in the background!

Related Articles You Might Find Useful