This workflow corresponds to n8n.io template #5512 — we link there as the canonical source.
This workflow follows the Gmail → HTTP Request recipe pattern — see all workflows that pair these two integrations.
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 →
{
"id": "UXgh0OxJeBzvsPd0",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Daily Currency Update",
"tags": [],
"nodes": [
{
"id": "fa7e8916-7e89-4981-a95b-970b419c4189",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-500,
-120
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "390155b0-6040-40fd-ab6f-284c579f29bb",
"name": "Set API Key & Preferred Currencies",
"type": "n8n-nodes-base.set",
"position": [
-280,
-120
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "4669b111-8540-4de2-a5f7-672f2ad81e98",
"name": "API Key",
"type": "string",
"value": ""
},
{
"id": "58c89ccb-2e3d-4334-9366-d0b285fdfbd8",
"name": "Preferred Currencies",
"type": "string",
"value": "PKR,GBP,EUR,USD,BDT,INR"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f90d7646-8bba-426f-ba8e-c2e6e7f23b69",
"name": "Get Latest Rate",
"type": "n8n-nodes-base.httpRequest",
"position": [
-60,
-120
],
"parameters": {
"url": "=https://api.currencyfreaks.com/v2.0/rates/latest?apikey={{ $json['API Key'] }}&symbols={{ $json['Preferred Currencies'] }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "0d270093-d04a-486a-92df-8b10104dc0e3",
"name": "Send a message",
"type": "n8n-nodes-base.gmail",
"position": [
540,
-120
],
"parameters": {
"sendTo": "={{ $('Set Recipient Email').item.json['Recipient Email'] }}",
"message": "=<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Currency Rate Update</title>\n <style>\n body {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n background-color: #f9fafb;\n color: #111827;\n margin: 0;\n padding: 2rem;\n }\n .email-container {\n max-width: 600px;\n margin: 0 auto;\n background-color: #ffffff;\n border-radius: 12px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);\n padding: 2rem;\n border: 1px solid #e5e7eb;\n }\n .heading {\n font-size: 1.25rem;\n font-weight: 600;\n margin-bottom: 1rem;\n color: #1f2937;\n }\n .section {\n margin-bottom: 1rem;\n }\n .rates {\n background-color: #f3f4f6;\n padding: 1rem;\n border-radius: 8px;\n font-family: monospace;\n white-space: pre-line;\n font-size: 0.95rem;\n }\n .footer {\n margin-top: 2rem;\n font-size: 0.875rem;\n color: #6b7280;\n }\n </style>\n </head>\n <body>\n <div class=\"email-container\">\n <div class=\"heading\">\ud83d\udcc8 Daily Currency Rate Update</div>\n <div class=\"section\">\n <strong>Date:</strong>\n {{ $('Get Latest Rate').item.json.date }}<br />\n <strong>Base Currency:</strong>\n {{ $('Get Latest Rate').item.json.base }}\n </div>\n <div class=\"section\">\n <strong>Exchange Rates:</strong>\n <div class=\"rates\">{{ Object.entries($('Get Latest Rate').item.json.rates).map(([k, v]) => `${k}: ${v}`).join('\\n') }}</div>\n</div>\n <div class=\"footer\">\n If you have any questions or would like to receive updates in a different format or frequency, feel free to reply to this email.<br /><br />\n Best regards,<br />\n <strong>Your Automation Bot</strong>\n </div>\n </div>\n </body>\n</html>\n",
"options": {},
"subject": "={{ $json.Subject }}"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "52c25dd1-6ae8-49f7-9858-a452e53e5f9b",
"name": "Set Recipient Email",
"type": "n8n-nodes-base.set",
"position": [
140,
-120
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "0b0969ab-45d1-427c-bac0-bd59a43661d7",
"name": "Recipient Email",
"type": "string",
"value": ""
}
]
}
},
"typeVersion": 3.4
},
{
"id": "eb16bc9f-ab43-4ae9-a243-95c27230a9b8",
"name": "Set E-mail Subject",
"type": "n8n-nodes-base.set",
"position": [
340,
-120
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ad95bad5-c4ac-4864-a83c-06d59d99b415",
"name": "Subject",
"type": "string",
"value": "Daily Currency Update: PKR, GBP, EUR, USD, BDT, INR"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "08160c70-de91-48e2-9bff-aa87bc24975b",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-220,
-500
],
"parameters": {
"width": 640,
"height": 320,
"content": "#### Daily Currency Update Workflow (n8n)\n\n- Trigger: ScheduleTrigger node (configurable interval)\n- Set Variables: API Key, Preferred Currencies (PKR, GBP, EUR, USD, BDT, INR)\n- HTTP Request: Fetch latest exchange rates from CurrencyFreaks API\n- Set Recipient Email\n- Set Email Subject\n- Send Email: HTML formatted via Gmail OAuth2 with dynamic rate data (date, base currency, rates)\n- Flow: ScheduleTrigger \u2192 Set API Key & Currencies \u2192 HTTP Request \u2192 Set Recipient \u2192 Set Subject \u2192 Gmail Send\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "8f4bb63b-5d83-41b6-bf78-307f20926d49",
"connections": {
"Send a message": {
"main": [
[]
]
},
"Get Latest Rate": {
"main": [
[
{
"node": "Set Recipient Email",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Set API Key & Preferred Currencies",
"type": "main",
"index": 0
}
]
]
},
"Set E-mail Subject": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Set Recipient Email": {
"main": [
[
{
"node": "Set E-mail Subject",
"type": "main",
"index": 0
}
]
]
},
"Set API Key & Preferred Currencies": {
"main": [
[
{
"node": "Get Latest Rate",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
gmailOAuth2
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Trigger: ScheduleTrigger node (configurable interval) Set Variables: API Key, Preferred Currencies (PKR, GBP, EUR, USD, BDT, INR) HTTP Request: Fetch latest exchange rates from CurrencyFreaks API Set Recipient Email Set Email Subject Send Email: HTML formatted via Gmail OAuth2…
Source: https://n8n.io/workflows/5512/ — 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.
YOUR_ID 4. Uses gmail, googleDrive, googleSheets, httpRequest. Scheduled trigger; 53 nodes.
Instead of providing a routine check, it focuses on significant movements by: Sending a Slack alert only if a query crosses a defined movement threshold. Emailing a structured report with the Top 25 i
Looking for a way to track GitHub bounty issues automatically and get notified in real time? This GitHub Bounty Tracker workflow monitors repositories for issues labeled 💎 Bounty, logs them in Google
This workflow automatically sends a beautifully designed HTML newsletter every Sunday at 8 AM, featuring products currently on sale from your Algolia-powered e-commerce store.
This workflow automatically identifies your weekly bestselling product from your Algolia-powered e-commerce store and generates a cinematic product video using Google VEO 3.0 AI, helping marketing tea