The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "ApogeoAPI \u2014 Normalize CRM deal value to USD using live FX",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "new-deal",
"responseMode": "onReceived"
},
"name": "Webhook (new CRM deal)",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
240,
300
]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.body.currency }}",
"operation": "equal",
"value2": "USD"
}
]
}
},
"name": "Already in USD?",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
460,
300
]
},
{
"parameters": {
"resource": "exchangeRate",
"operation": "get",
"currency": "={{ $node['Webhook (new CRM deal)'].json.body.currency }}"
},
"name": "ApogeoAPI: get FX rate",
"type": "n8n-nodes-apogeoapi.apogeoapi",
"typeVersion": 1,
"position": [
680,
380
],
"credentials": {
"apogeoApiCredentials": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"values": {
"number": [
{
"name": "valueUSD",
"value": "={{ Math.round( ($node['Webhook (new CRM deal)'].json.body.amount / $json.usdRate) * 100 ) / 100 }}"
}
],
"string": [
{
"name": "originalCurrency",
"value": "={{ $node['Webhook (new CRM deal)'].json.body.currency }}"
},
{
"name": "rateUsedAt",
"value": "={{ $json.lastUpdated }}"
}
]
},
"options": {}
},
"name": "Compute USD value",
"type": "n8n-nodes-base.set",
"typeVersion": 2,
"position": [
900,
380
]
},
{
"parameters": {
"values": {
"number": [
{
"name": "valueUSD",
"value": "={{ $node['Webhook (new CRM deal)'].json.body.amount }}"
}
]
},
"options": {}
},
"name": "Pass through (USD)",
"type": "n8n-nodes-base.set",
"typeVersion": 2,
"position": [
680,
220
]
}
],
"connections": {
"Webhook (new CRM deal)": {
"main": [
[
{
"node": "Already in USD?",
"type": "main",
"index": 0
}
]
]
},
"Already in USD?": {
"main": [
[
{
"node": "Pass through (USD)",
"type": "main",
"index": 0
}
],
[
{
"node": "ApogeoAPI: get FX rate",
"type": "main",
"index": 0
}
]
]
},
"ApogeoAPI: get FX rate": {
"main": [
[
{
"node": "Compute USD value",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {},
"staticData": null,
"meta": {
"templateCreatedBy": "ApogeoAPI",
"description": "When a CRM deal is created (HubSpot, Salesforce, Pipedrive etc.) in any currency, fetches the live USD exchange rate from ApogeoAPI and computes the USD-normalized amount. Useful for unified pipeline reporting across regions. The IF branch skips the FX call when the deal is already in USD.",
"useCases": [
"Sales ops: unified MRR/ARR reporting in USD",
"Finance: real-time USD valuation of multi-currency pipeline",
"Reporting: consistent currency for dashboards"
]
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
apogeoApiCredentials
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
ApogeoAPI — Normalize CRM deal value to USD using live FX. Uses n8n-nodes-apogeoapi. Webhook trigger; 5 nodes.
Source: https://github.com/APOGEOAPI/n8n-workflows/blob/main/02-crm-currency-normalization.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
TestMultiCredentials. Uses executeCommand. Webhook trigger; 13 nodes.
Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?
> ⚠️ Notice: > This workflow uses the HTML to Docx node from customjs.space, which requires a self-hosted n8n instance and a CustomJS API key.
Dispatcher. Webhook trigger; 10 nodes.
4. Grievance Router. Webhook trigger; 10 nodes.