Automatically Update Currency Exchange Rates for Hubspot Products

John Duboyski
7 min readFeb 20, 2022

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

The Building Blocks

What you’ll need:

  • An Integromat account (Any Plan)
  • (Optional) Access to a currency conversion API if you choose not to use the 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

​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 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).

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.

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.

Where to find your Hubspot API Key

  • In your 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”.

How to run a select module in Integromat Scenario

  • Once, click the bubble above the module to 1. Open The Data View, 2. View Bundle Data, then 3. View Output Bundle.

Where to access the Hubspot product fetch modules output data in 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”.

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.

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.

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 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”.

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!

For more hints, tips & guides, visit our Blog.

--

--

John Duboyski
0 Followers

Founder of Flux Digital Labs, a team dedicated to helping SMBs focus on growth without the data and tech stress. Check us out here: fluxdigitallabs.com