This workflow corresponds to n8n.io template #4628 — we link there as the canonical source.
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": "DuPvLu9nGwryNe1H",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Radarr Notifications",
"tags": [],
"nodes": [
{
"id": "9c0dffb3-46b5-4408-a4e7-31ffeacc8f15",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
240,
60
],
"parameters": {
"path": "radarr",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "2d5536bc-86cf-434b-9a68-9cd00e70cccf",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
460,
-40
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Bazarr",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "253ec7a1-89c0-4308-818a-aa82ce02ee4b",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.body.title }}",
"rightValue": "Bazarr"
}
]
},
"renameOutput": true
},
{
"outputKey": "Radarr",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "ce9a2e5b-62b3-4e27-85d0-4f92ee85f49f",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.instanceName }}",
"rightValue": "Radarr"
}
]
},
"renameOutput": true
},
{
"outputKey": "Sonarr",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "52b206b1-39c0-43ae-8316-c27e754b8246",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.instanceName }}",
"rightValue": "Sonarr"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "5b9bc9ee-573b-47d5-9459-25040f4a8b76",
"name": "Notify Discord",
"type": "n8n-nodes-base.httpRequest",
"position": [
2440,
60
],
"parameters": {
"url": "https://discord.com/api/webhooks/...",
"method": "POST",
"options": {},
"jsonBody": "={{ $json.body }}",
"sendBody": true,
"specifyBody": "json"
},
"retryOnFail": true,
"typeVersion": 4.2
},
{
"id": "6daba0b8-2e7b-4156-bc51-748e84f2f3d7",
"name": "Set subtitle properties",
"type": "n8n-nodes-base.set",
"position": [
1340,
-240
],
"parameters": {
"include": "selected",
"options": {},
"assignments": {
"assignments": [
{
"id": "74b33e39-12e3-4cbf-a8a2-5701a5298a74",
"name": "title",
"type": "string",
"value": "={{ $json.body.message.replace(/\\((\\d{4})\\) \\(\\d{4}\\)/, '($1)').match(/^(.+? \\(\\d{4}\\))(?: - (S\\d{2}E\\d{2}))?/)[0].trim()\n }}"
},
{
"id": "6c294ae1-7ab6-43aa-b255-cf63e91c2884",
"name": "language",
"type": "string",
"value": "={{ $json.body.message.match(/: ([A-Za-z ]+) subtitles/)[1].trim() }}"
},
{
"id": "a4890d25-d3cd-4cc2-9d27-ca6a6acc87c7",
"name": "provider",
"type": "string",
"value": "={{ $json.body.message.match(/from ([a-zA-Z0-9]+) with/)[1].trim() }}"
},
{
"id": "9b79ec44-d32b-48c1-9439-56018deb3fe7",
"name": "score",
"type": "string",
"value": "={{ $json.body.message.match(/score of ([\\d.]+%)/)[1].trim() }}"
},
{
"id": "32b133db-fdd8-418c-be68-25566bc09d3c",
"name": "=description",
"type": "string",
"value": "={{ $json.body.message.match(/ : .+ (subtitles .+) from/)[1].trim() }}"
},
{
"id": "ed0b2761-f2ab-4ff2-adf2-c9157d8dd7e3",
"name": "image",
"type": "string",
"value": ""
}
]
},
"includeFields": "color,avatar,username",
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "4640e2d4-0b30-44e0-ab4e-0ce8422bfea5",
"name": "Set subtitle fields",
"type": "n8n-nodes-base.code",
"position": [
1560,
-240
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "$input.item.json.fields = [\n {\n name: \"Language\",\n value: $json.language,\n inline: true,\n },\n {\n name: \"Score\",\n value: $json.score,\n inline: true,\n },\n];\n\nreturn $input.item;"
},
"typeVersion": 2
},
{
"id": "eddbc733-db49-4989-b15d-5db1a3f65cb5",
"name": "Set Radarr properties",
"type": "n8n-nodes-base.set",
"position": [
1120,
-40
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d0f12d48-229a-4ac7-a1a8-2bdca6fedcfe",
"name": "color",
"type": "number",
"value": 16761392
},
{
"id": "79103f6e-82bd-4d8c-980f-f8efe3b49523",
"name": "avatar",
"type": "string",
"value": "https://raw.githubusercontent.com/YOUR_AWS_SECRET_KEY_HERE.png"
},
{
"id": "88744f9f-afd8-4d20-9c5a-c788ffd9e725",
"name": "username",
"type": "string",
"value": "Radarr"
},
{
"id": "a51e865e-cc57-406e-8173-a2b359101794",
"name": "body",
"type": "object",
"value": "={{ $json.body }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "c04f35b2-9811-4c56-9600-781c2e8ba275",
"name": "Set Bazarr properties",
"type": "n8n-nodes-base.set",
"position": [
1120,
-240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d0f12d48-229a-4ac7-a1a8-2bdca6fedcfe",
"name": "color",
"type": "number",
"value": 16777215
},
{
"id": "79103f6e-82bd-4d8c-980f-f8efe3b49523",
"name": "avatar",
"type": "string",
"value": "https://raw.githubusercontent.com/morpheus65535/YOUR_AWS_SECRET_KEY_HERE/images/logo64.png"
},
{
"id": "88744f9f-afd8-4d20-9c5a-c788ffd9e725",
"name": "username",
"type": "string",
"value": "Bazarr"
},
{
"id": "7b5b586d-b9f6-4f6e-afd9-c8a5ec68d19a",
"name": "body",
"type": "object",
"value": "={{ $json.body }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "3ab117bc-a6bc-429a-b26b-932799423767",
"name": "Set Sonarr properties",
"type": "n8n-nodes-base.set",
"position": [
680,
235
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d0f12d48-229a-4ac7-a1a8-2bdca6fedcfe",
"name": "color",
"type": "number",
"value": 52479
},
{
"id": "79103f6e-82bd-4d8c-980f-f8efe3b49523",
"name": "avatar",
"type": "string",
"value": "https://raw.githubusercontent.com/Sonarr/Sonarr/refs/heads/main/Logo/64.png"
},
{
"id": "88744f9f-afd8-4d20-9c5a-c788ffd9e725",
"name": "username",
"type": "string",
"value": "Sonarr"
},
{
"id": "cf9ecba3-39ab-42b5-8669-cfee2ceb64b7",
"name": "body",
"type": "object",
"value": "={{ $json.body }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5fbd3d74-d325-4f39-8c01-83a3f850acd7",
"name": "Set movie properties",
"type": "n8n-nodes-base.set",
"position": [
1340,
-40
],
"parameters": {
"include": "selected",
"options": {},
"assignments": {
"assignments": [
{
"id": "a5fdeaf9-2e12-4906-8145-3ca90421563f",
"name": "title",
"type": "string",
"value": "={{ $json.body.movie.title }} ({{ $json.body.movie.year ? $json.body.movie.year : $json.body.remoteMovie.year }})"
},
{
"id": "a032bd92-5343-417e-94ed-cf677f18c3bb",
"name": "description",
"type": "string",
"value": "={{ $json.body.eventType }}{{ $json.body.deleteReason ? $json.body.deleteReason : \"\" }}"
},
{
"id": "d05f9e95-7fa3-48c2-93a2-10b7415362eb",
"name": "quality",
"type": "string",
"value": "={{ ($json.body.movieFile ? $json.body.movieFile.quality : $json.body.downloadInfo.quality) }}"
},
{
"id": "8a9b51f7-3d67-43d6-9836-f78be6d48fa4",
"name": "size",
"type": "string",
"value": "={{ (($json.body.movieFile ? $json.body.movieFile.size : $json.body.release.size) / (1024 * 1024 * 1024)).toFixed(1) }} GB"
},
{
"id": "824ec3a3-b396-4cbf-bbd9-d56c501b3a05",
"name": "release",
"type": "string",
"value": "={{ $json.body.release ? $json.body.release.releaseTitle : $json.body.movieFile.sceneName }}"
},
{
"id": "2039dc49-1fe0-4313-955c-6b2b546fc4ff",
"name": "image",
"type": "string",
"value": "={{ $json.body.movie.images.find(item => item.coverType === 'poster').remoteUrl }}"
},
{
"id": "1d322b7a-c635-409a-bc7c-89c693539db0",
"name": "subtitles",
"type": "string",
"value": "={{ $json.body.movieFile.mediaInfo.subtitles.join('/') }}"
}
]
},
"includeFields": "color,avatar,username",
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "d33e55bf-873d-47a7-9b09-ace2994f1e01",
"name": "Set series properties",
"type": "n8n-nodes-base.set",
"position": [
1340,
235
],
"parameters": {
"include": "selected",
"options": {},
"assignments": {
"assignments": [
{
"id": "a5fdeaf9-2e12-4906-8145-3ca90421563f",
"name": "title",
"type": "string",
"value": "={{ $json.body.series.title }} - S{{$json.body.episodes[0].seasonNumber.toString().padStart(2, '0') }}E{{ $json.body.episodes[0].episodeNumber.toString().padStart(2, '0')}}"
},
{
"id": "a032bd92-5343-417e-94ed-cf677f18c3bb",
"name": "action",
"type": "string",
"value": "={{ $json.body.eventType }}"
},
{
"id": "d05f9e95-7fa3-48c2-93a2-10b7415362eb",
"name": "quality",
"type": "string",
"value": "={{ $json.body.episodeFile ? $json.body.episodeFile.quality : $json.body.release.quality }}"
},
{
"id": "8a9b51f7-3d67-43d6-9836-f78be6d48fa4",
"name": "size",
"type": "string",
"value": "={{ (($json.body.episodeFile ? $json.body.episodeFile.size : $json.body.release.size) / (1024 * 1024 * 1024)).toFixed(1) }} GB"
},
{
"id": "824ec3a3-b396-4cbf-bbd9-d56c501b3a05",
"name": "release",
"type": "string",
"value": "={{ $json.body.episodeFile ? $json.body.episodeFile.sceneName : $json.body.release.releaseTitle }}"
},
{
"id": "2039dc49-1fe0-4313-955c-6b2b546fc4ff",
"name": "image",
"type": "string",
"value": "={{ $json.body.series.images.find(item => item.coverType === 'poster').remoteUrl }}"
},
{
"id": "b9e2aaac-f53e-4c97-a51a-c7ec49a581d2",
"name": "description",
"type": "string",
"value": "={{ $json.body.eventType }}{{ $json.body.deleteReason ? $json.body.deleteReason : \"\" }}"
},
{
"id": "f42fdba2-dea4-4d7b-99cc-838909a2930c",
"name": "subtitles",
"type": "string",
"value": "={{ $json.body.episodeFile && $json.body.episodeFile.mediaInfo && $json.body.episodeFile.mediaInfo.subtitles ? $json.body.episodeFile.mediaInfo.subtitles.join('/') : 'None' }}"
}
]
},
"includeFields": "color,avatar,username",
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "47489049-0f54-41aa-a9ac-28549ee5c8ac",
"name": "Set movie fields",
"type": "n8n-nodes-base.code",
"position": [
1560,
-40
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "$input.item.json.fields = [];\n\n$input.item.json.fields.push({\n \"name\": \"Quality\",\n \"value\": $json.quality,\n \"inline\": true\n});\n\n$input.item.json.fields.push({\n \"name\": \"Size\",\n \"value\": $json.size,\n \"inline\": true\n});\n\nif ($json.subtitles && $json.subtitles != \"\") {\n $input.item.json.fields.push({\n \"name\": \"Subtitles\",\n \"value\": $json.subtitles,\n \"inline\": true\n });\n}\n\n$input.item.json.fields.push({\n \"name\": \"Release\",\n \"value\": \"```\" + $json.release + \"```\"\n});\n\nreturn $input.item;"
},
"typeVersion": 2
},
{
"id": "7f07ae01-cea0-4c65-9a3a-7cf18328eeae",
"name": "Set series fields",
"type": "n8n-nodes-base.code",
"position": [
1560,
235
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "$input.item.json.fields = [\n {\n \"name\": \"Quality\",\n \"value\": $json.quality,\n \"inline\": true\n },\n {\n \"name\": \"Size\",\n \"value\": $json.size,\n \"inline\": true\n },\n {\n \"name\": \"Subtitles\",\n \"value\": $json.subtitles && $json.subtitles !== 'None' ? `${$json.subtitles.split('/')[0]}/... (${$json.subtitles.split('/').length})` : $json.subtitles\n,\n \"inline\": true\n },\n {\n \"name\": \"Release\",\n \"value\": \"```\" + $json.release + \"```\"\n }\n];\n\nreturn $input.item;"
},
"typeVersion": 2
},
{
"id": "d2d94c62-9083-45e7-b766-c9838316c0e5",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
1120,
160
],
"parameters": {
"include": "allOtherFields",
"options": {
"destinationFieldName": "body.episodeFile"
},
"fieldToSplitOut": "body.episodeFiles"
},
"typeVersion": 1
},
{
"id": "8814e90e-5a5f-40ae-ba2b-95dce6ededac",
"name": "Is multiple",
"type": "n8n-nodes-base.if",
"position": [
900,
235
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "406df52e-e05b-4c77-b704-ec447596dbf8",
"operator": {
"type": "array",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.episodeFiles }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c1ba73f3-7e28-43c5-a893-9803a694e0d4",
"name": "Translate Bazarr description",
"type": "n8n-nodes-base.code",
"position": [
1780,
-240
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "switch ($json.description) {\n case \"subtitles downloaded\":\n $json.description = \"Subtitles downloaded\";\n break;\n}\n\nreturn $input.item;"
},
"typeVersion": 2
},
{
"id": "d9c13a65-82fe-4c6d-a3a5-f2066ef3dd3c",
"name": "Translate Radarr description",
"type": "n8n-nodes-base.code",
"position": [
1780,
-40
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "switch ($json.description) {\n case \"MovieFileDeleteupgrade\":\n $json.description = \"Movie upgraded\";\n break;\n case \"MovieFileDeletemanual\":\n $json.description = \"Movie file deleted\";\n break;\n case \"Download\":\n $json.description = \"Movie imported\";\n break;\n case \"ManualInteractionRequired\":\n $json.description = \"Manual interaction required\";\n break;\n}\n\nreturn $input.item;"
},
"typeVersion": 2
},
{
"id": "54f24e3b-d753-4f25-887f-8901d98ccabb",
"name": "Translate Sonarr description",
"type": "n8n-nodes-base.code",
"position": [
1780,
235
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "switch ($json.description) {\n case \"EpisodeFileDeleteupgrade\":\n $json.description = \"Episode upgraded\";\n break;\n case \"EpisodeFileDeletemanual\":\n $json.description = \"Episode file deleted\";\n break;\n case \"Download\":\n $json.description = \"Episode Imported\";\n break;\n case \"ManualInteractionRequired\":\n $json.description = \"Manual interaction required\";\n break;\n}\n\nreturn $input.item;"
},
"typeVersion": 2
},
{
"id": "3d23dd8f-e53c-4da7-90ea-08a542685f4c",
"name": "Evaluation",
"type": "n8n-nodes-base.evaluation",
"position": [
2440,
-140
],
"parameters": {
"outputs": {
"values": [
{
"outputName": "actual_output",
"outputValue": "={{ $json.body }}"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Sco9nfetll-LH3g4fplcGOs5TedL0NrDjPLiXAo8oX4/edit#gid=0",
"cachedResultName": "Radarr"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Sco9nfetll-LH3g4fplcGOs5TedL0NrDjPLiXAo8oX4",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Sco9nfetll-LH3g4fplcGOs5TedL0NrDjPLiXAo8oX4/edit?usp=drivesdk",
"cachedResultName": "n8n tests"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "9dadae42-c6c8-480b-82aa-6894b55358e3",
"name": "Is Test",
"type": "n8n-nodes-base.evaluation",
"position": [
2220,
-40
],
"parameters": {
"operation": "checkIfEvaluating"
},
"typeVersion": 4.6
},
{
"id": "59b286d5-e7d2-414a-a460-8dba71027079",
"name": "Run Tests",
"type": "n8n-nodes-base.evaluationTrigger",
"position": [
-200,
-140
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Sco9nfetll-LH3g4fplcGOs5TedL0NrDjPLiXAo8oX4/edit#gid=0",
"cachedResultName": "Radarr"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Sco9nfetll-LH3g4fplcGOs5TedL0NrDjPLiXAo8oX4",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Sco9nfetll-LH3g4fplcGOs5TedL0NrDjPLiXAo8oX4/edit?usp=drivesdk",
"cachedResultName": "n8n tests"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "8995967a-058d-4cc5-bae6-894432bda437",
"name": "Test is enabled",
"type": "n8n-nodes-base.filter",
"position": [
20,
-140
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "75c6f304-f4ea-4206-aba0-fb3b0a9605e4",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.input }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "baf45f74-a84d-4121-83d6-7dc40c940285",
"name": "Prepare notification JSON",
"type": "n8n-nodes-base.code",
"position": [
2000,
-40
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "var content = {\n username: $json.username,\n avatar_url: $json.avatar,\n embeds: [\n {\n title: $json.title,\n description: $json.description,\n author: {\n name: $json.username,\n icon_url: $json.avatar,\n },\n thumbnail: {\n url: $json.image\n },\n color: $json.color,\n fields: $json.fields,\n },\n ],\n};\n\nreturn { json: { body: content } };\n"
},
"typeVersion": 2
},
{
"id": "684c7848-ce07-4b3f-8087-124f89b23c52",
"name": "Convert to JSON",
"type": "n8n-nodes-base.code",
"position": [
240,
-140
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "let item = JSON.parse($json.input);\nreturn item;"
},
"typeVersion": 2
},
{
"id": "5693766d-8739-4fbf-bb8b-8f3310a0f5ef",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
820,
-240
],
"parameters": {
"height": 100,
"content": "Bazarr events:\n- subtitle downloaded\n- subtitle upgraded"
},
"typeVersion": 1
},
{
"id": "935e4ec1-378c-44a2-93d8-3b2c5d7b7c9c",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
820,
-40
],
"parameters": {
"content": "Radarr events:\n- File Import\n- Movie File Delete\n- Movie File Delete for Upgrade\n- Manual Interaction Required"
},
"typeVersion": 1
},
{
"id": "434b22ed-f8e3-4c97-ae6e-de6baa45962b",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
220
],
"parameters": {
"content": "Sonarr events:\n- File Import\n- Movie File Delete\n- Movie File Delete for Upgrade\n- Manual Interaction Required"
},
"typeVersion": 1
},
{
"id": "297a568f-99ad-4b34-a466-c0a43471a62e",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-680,
-560
],
"parameters": {
"width": 380,
"height": 780,
"content": "### Custom Radarr / Sonarr / Bazarr notifications\n\nIf you are self hosting Radarr / Sonarr / Bazarr or similar you might want to customise the notifications. This workflow allows you to easily make them look like anything you want.\n\nFor my use case I wanted the notifications to look like the default ones but with less data (simplified). Only few event types were tested since I also did not want to have too many notifications per event. Still, it is easy to add more event types and more fields. Feel free to play around.\n\nConfiguring this workflow:\n1. Change your Webhook trigger endpoint in the first node\n2. Change the Discord channel Webhook URL in the last node (or use a bot if you prefer)\n3. You can ignore the Evaluation triggers. I am just using them to test all notification types.\n\n\nConfiguring your *arr:\n1. Go to Settings > Connect\n2. Add Webhook connection and point it to the one you configured here (remember to use production Webhook)\n3. Select File Import, Movie File Delete, Movie File Delete for Upgrade, Manual Interaction Required (Other types should also work. I just did not test them)\n\n\nNote about Bazarr:\nIt is using ultra simple configuration compared to others. There are no event types at all. You also have to use \"JSON\" (there is no Webhook type) and in url use jsons instead of https like \"jsons://n8n.com/webhook/radarr\"\n"
},
"typeVersion": 1
},
{
"id": "9238365a-5b12-4e5e-a969-9d43c790de83",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1980,
-300
],
"parameters": {
"height": 240,
"content": "### Output\nDiscord format of notification.\n\n- Title (Year) - Episode\n- What happened\n- Thumbnail\n- Quality\n- Size\n- Subtitle count\n- Release name"
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "98cc24c8-5aba-4b3c-8e5c-e8c358d085cd",
"connections": {
"Switch": {
"main": [
[
{
"node": "Set Bazarr properties",
"type": "main",
"index": 0
}
],
[
{
"node": "Set Radarr properties",
"type": "main",
"index": 0
}
],
[
{
"node": "Set Sonarr properties",
"type": "main",
"index": 0
}
]
]
},
"Is Test": {
"main": [
[
{
"node": "Evaluation",
"type": "main",
"index": 0
}
],
[
{
"node": "Notify Discord",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Run Tests": {
"main": [
[
{
"node": "Test is enabled",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Set series properties",
"type": "main",
"index": 0
}
]
]
},
"Is multiple": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
],
[
{
"node": "Set series properties",
"type": "main",
"index": 0
}
]
]
},
"Notify Discord": {
"main": [
[]
]
},
"Convert to JSON": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Test is enabled": {
"main": [
[
{
"node": "Convert to JSON",
"type": "main",
"index": 0
}
]
]
},
"Set movie fields": {
"main": [
[
{
"node": "Translate Radarr description",
"type": "main",
"index": 0
}
]
]
},
"Set series fields": {
"main": [
[
{
"node": "Translate Sonarr description",
"type": "main",
"index": 0
}
]
]
},
"Set subtitle fields": {
"main": [
[
{
"node": "Translate Bazarr description",
"type": "main",
"index": 0
}
]
]
},
"Set movie properties": {
"main": [
[
{
"node": "Set movie fields",
"type": "main",
"index": 0
}
]
]
},
"Set Bazarr properties": {
"main": [
[
{
"node": "Set subtitle properties",
"type": "main",
"index": 0
}
]
]
},
"Set Radarr properties": {
"main": [
[
{
"node": "Set movie properties",
"type": "main",
"index": 0
}
]
]
},
"Set Sonarr properties": {
"main": [
[
{
"node": "Is multiple",
"type": "main",
"index": 0
}
]
]
},
"Set series properties": {
"main": [
[
{
"node": "Set series fields",
"type": "main",
"index": 0
}
]
]
},
"Set subtitle properties": {
"main": [
[
{
"node": "Set subtitle fields",
"type": "main",
"index": 0
}
]
]
},
"Prepare notification JSON": {
"main": [
[
{
"node": "Is Test",
"type": "main",
"index": 0
}
]
]
},
"Translate Bazarr description": {
"main": [
[
{
"node": "Prepare notification JSON",
"type": "main",
"index": 0
}
]
]
},
"Translate Radarr description": {
"main": [
[
{
"node": "Prepare notification JSON",
"type": "main",
"index": 0
}
]
]
},
"Translate Sonarr description": {
"main": [
[
{
"node": "Prepare notification JSON",
"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.
googleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This is a simple temlate that will allow you to customise the notifications in Radarr, Sonarr, Bazarr and similar. By default the notifications are configured to be sent to discord and look similar to the default ones but are just minimalistic.
Source: https://n8n.io/workflows/4628/ — 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.
HR teams, IT Operations, and System Administrators managing employee onboarding at scale. It’s perfect if you use Odoo 18 to trigger account requests and need Redmine + GitLab accounts created instant
This workflow is a complete, production-ready solution for recovering abandoned carts in Shopify stores using a multi-channel, multi-touch approach. It automates personalized follow-ups via Email, SMS
This workflow automates end-to-end research analysis by coordinating multiple AI models—including NVIDIA NIM (Llama), OpenAI GPT-4, and Claude to analyze uploaded documents, extract insights, and gene
Are you tired of the repetitive dance between git push, creating a pull request in GitHub, updating the corresponding task in JIRA, and then manually notifying your team in Slack, or Notion?
This workflow automatically detects changes in the .env.staging file in a GitHub repository and keeps Android configuration files (build.gradle and gradle.properties) in sync.It creates a new Git bran