{"_id":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro","_rev":"6-8254641face975d5ac74df7ac2dd27fb","name":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro","version":"1.0.0","keywords":["n8n-community-node-package","n8n","smartcsrpro","tickets","insurance"],"author":{"name":"Belmont Digital Marketing","email":"matthias@belmontdigitalmarketing.com"},"license":"MIT","_id":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro@1.0.0","maintainers":[{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"}],"homepage":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro","bugs":{"url":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro/issues"},"n8n":{"nodes":["dist/nodes/SmartCsrPro/SmartCsrPro.node.js"],"credentials":["dist/credentials/SmartCsrProApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"b91acebbdea2e2af8469583fab662244f97d57cd","tarball":"https://registry.npmjs.org/@belmontdigitalmarketing/n8n-nodes-smartcsrpro/-/n8n-nodes-smartcsrpro-1.0.0.tgz","fileCount":10,"integrity":"sha512-zHcVk07Y5X5fp5ofCW6KwBoEYLfBmXsSN4kDJTyuYEa/ZZbYUmTBVm2ilTrYFEZhezk+buBXj1aJZ75lgYL1dw==","signatures":[{"sig":"MEUCIQC/r8BB9PhH92gGWIBFzYW30BEbzQPOb7dRxa9v3KMSwgIgVzdL79KYH3gsXdrBFklE3sGuGSQ372mzgCVCzzNhsTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63119},"main":"index.js","gitHead":"4e270e0ab0a4344c010c3a50a072c038e3c26610","scripts":{"dev":"tsc --watch","lint":"tslint -p tsconfig.json -c tslint.json","build":"tsc && gulp build:icons","lintfix":"tslint --fix -p tsconfig.json -c tslint.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"},"repository":{"url":"git+https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro.git","type":"git"},"_npmVersion":"10.9.2","description":"n8n community node to create tickets in SmartCSRPro via the webhook-to-ticket API","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","typescript":"~5.3.0","@types/node":"^20.0.0","n8n-workflow":"*"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-smartcsrpro_1.0.0_1776981036710_0.7500760318686603","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro","version":"1.0.1","keywords":["n8n-community-node-package","n8n","smartcsrpro","tickets","insurance"],"author":{"name":"Belmont Digital Marketing","email":"matthias@belmontdigitalmarketing.com"},"license":"MIT","_id":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro@1.0.1","maintainers":[{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"}],"homepage":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro","bugs":{"url":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro/issues"},"n8n":{"nodes":["dist/nodes/SmartCsrPro/SmartCsrPro.node.js"],"credentials":["dist/credentials/SmartCsrProApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"aab07e5e05b7c0ebf3322e81d56648218b350827","tarball":"https://registry.npmjs.org/@belmontdigitalmarketing/n8n-nodes-smartcsrpro/-/n8n-nodes-smartcsrpro-1.0.1.tgz","fileCount":10,"integrity":"sha512-yP62lIXAUBMT+Zt67dBWp+ikd5UTz3qRpMsl3MO1AqjPhvMb8RwvyVyV6X0kij5jofsrGJpssEOSMwKifzt0cA==","signatures":[{"sig":"MEUCIQC5PwquYG6gdS2mZ1VcCIGwi8Q9t47k/ikrUfDls9enkQIgHG3He7XeYg58U9QQCLMLjqTbGSp6+WiYPpUyVpRNhLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37307},"main":"index.js","gitHead":"857062bc8de58800e4cc89865e916d0ec55f641b","scripts":{"dev":"tsc --watch","lint":"eslint nodes credentials package.json","build":"tsc && gulp build:icons","lintfix":"eslint nodes credentials package.json --fix","prepublishOnly":"npm run build && eslint -c .eslintrc.prepublish.js nodes credentials package.json"},"_npmUser":{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"},"repository":{"url":"git+https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro.git","type":"git"},"_npmVersion":"10.8.2","description":"n8n community node to create tickets in SmartCSRPro via the webhook-to-ticket API","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","eslint":"^8.57.1","typescript":"~5.3.0","@types/node":"^20.0.0","n8n-workflow":"~1.10.0","jsonc-eslint-parser":"^2.4.2","@typescript-eslint/parser":"^7.18.0","eslint-plugin-n8n-nodes-base":"^1.16.6"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-smartcsrpro_1.0.1_1778631327386_0.7050068323862548","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro","version":"1.1.0","keywords":["n8n-community-node-package","n8n","smartcsrpro","tickets","insurance"],"author":{"name":"Belmont Digital Marketing","email":"matthias@belmontdigitalmarketing.com"},"license":"MIT","_id":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro@1.1.0","maintainers":[{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"}],"homepage":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro","bugs":{"url":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro/issues"},"n8n":{"nodes":["dist/nodes/SmartCsrPro/SmartCsrPro.node.js"],"credentials":["dist/credentials/SmartCsrProApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"11532a3edcc23ea0a07a31335d0c06d4c6dd8b03","tarball":"https://registry.npmjs.org/@belmontdigitalmarketing/n8n-nodes-smartcsrpro/-/n8n-nodes-smartcsrpro-1.1.0.tgz","fileCount":10,"integrity":"sha512-B9m5ntgLmhYoTdy6/Q8tYSv0MRzhxq6XTNTx/6NPxI3Ahh6XYQ3JUemTf8jYvK7P+T38wI2WW0kBJC7bYwBcmQ==","signatures":[{"sig":"MEUCIBQuOxKo2DpkL12f0LLgTROq0r2oyT0j/SRRHno7mmxcAiEA/mjaRwbeNaPevoG7n3xeLD3gPXTudmCpbywavl+0y/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85594},"main":"index.js","gitHead":"2bd8ca49d2bf0fe8221332c5ea1e8fed2710d890","scripts":{"dev":"tsc --watch","lint":"eslint nodes credentials package.json","build":"tsc && gulp build:icons","format":"prettier nodes credentials --write","lintfix":"eslint nodes credentials package.json --fix","prepublishOnly":"npm run build && eslint -c .eslintrc.prepublish.js nodes credentials package.json"},"_npmUser":{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"},"repository":{"url":"git+https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro.git","type":"git"},"_npmVersion":"10.8.2","description":"n8n community node to create tickets and upsert contacts in SmartCSRPro via the webhook API","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","eslint":"^8.57.1","prettier":"^3.8.3","typescript":"~5.3.0","@types/node":"^20.0.0","n8n-workflow":"~1.10.0","jsonc-eslint-parser":"^2.4.2","@typescript-eslint/parser":"^7.18.0","eslint-plugin-n8n-nodes-base":"^1.16.6"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-smartcsrpro_1.1.0_1779120653629_0.5317630033591092","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro","version":"1.1.1","keywords":["n8n-community-node-package","n8n","smartcsrpro","tickets","insurance"],"author":{"name":"Belmont Digital Marketing","email":"matthias@belmontdigitalmarketing.com"},"license":"MIT","_id":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro@1.1.1","maintainers":[{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"}],"homepage":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro","bugs":{"url":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro/issues"},"n8n":{"nodes":["dist/nodes/SmartCsrPro/SmartCsrPro.node.js"],"credentials":["dist/credentials/SmartCsrProApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"ae7a21aa6f5d986fa6ad01e5b7a8d4291108973e","tarball":"https://registry.npmjs.org/@belmontdigitalmarketing/n8n-nodes-smartcsrpro/-/n8n-nodes-smartcsrpro-1.1.1.tgz","fileCount":10,"integrity":"sha512-2zhxk+lmv3oXVctKC1gi196WOop/9ATjz6Cgr+WRjTBIgYXuZS8rcLOcYfDfpHVNu+f8ogjK8ymNdVqTqrA7vg==","signatures":[{"sig":"MEUCIQD67Nip96f2AJh8YGirtmT3luy8LKfxwosG6rU1P9SJFwIgIFzZLO2Hy6u/3tolzh7t5ym/+oYG8I6vvP0O1t9NF1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86683},"main":"index.js","gitHead":"51994738485aa431413d4948bc90a4ba4d2a4517","scripts":{"dev":"tsc --watch","lint":"eslint nodes credentials package.json","build":"tsc && gulp build:icons","format":"prettier nodes credentials --write","lintfix":"eslint nodes credentials package.json --fix","prepublishOnly":"npm run build && eslint -c .eslintrc.prepublish.js nodes credentials package.json"},"_npmUser":{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"},"repository":{"url":"git+https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro.git","type":"git"},"_npmVersion":"10.8.2","description":"n8n community node to create tickets and upsert contacts in SmartCSRPro via the webhook API","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","eslint":"^8.57.1","prettier":"^3.8.3","typescript":"~5.3.0","@types/node":"^20.0.0","n8n-workflow":"~1.10.0","jsonc-eslint-parser":"^2.4.2","@typescript-eslint/parser":"^7.18.0","eslint-plugin-n8n-nodes-base":"^1.16.6"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-smartcsrpro_1.1.1_1779121303857_0.9970305534627946","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro","version":"1.2.0","keywords":["n8n-community-node-package","n8n","smartcsrpro","tickets","insurance"],"author":{"name":"Belmont Digital Marketing","email":"matthias@belmontdigitalmarketing.com"},"license":"MIT","_id":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro@1.2.0","maintainers":[{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"}],"homepage":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro","bugs":{"url":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro/issues"},"n8n":{"nodes":["dist/nodes/SmartCsrPro/SmartCsrPro.node.js"],"credentials":["dist/credentials/SmartCsrProApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"a0b3d3fc695406664b4bccd04e3104c9c1720109","tarball":"https://registry.npmjs.org/@belmontdigitalmarketing/n8n-nodes-smartcsrpro/-/n8n-nodes-smartcsrpro-1.2.0.tgz","fileCount":10,"integrity":"sha512-tZkevR0hL3N2Kjg8FKkGwzsLWAoh9MfYGU+/R65S8B2U1rOdSvWyTqtSc0Hpu6T3Ls4yQtMJ9/e9fMFy5g7jlQ==","signatures":[{"sig":"MEUCIEBa45FV5dTjpHLKLNOgkLWsXFMSY1rNTOS3jW4HMc1RAiEAhzMwyXtDrD9wP5ewKYg0u4VkCekzkOl42PUXGJL0930=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93300},"main":"index.js","gitHead":"9c89eefb98bfd8375064baee5bd1c055a2e4765e","scripts":{"dev":"tsc --watch","lint":"eslint nodes credentials package.json","build":"tsc && gulp build:icons","format":"prettier nodes credentials --write","lintfix":"eslint nodes credentials package.json --fix","prepublishOnly":"npm run build && eslint -c .eslintrc.prepublish.js nodes credentials package.json"},"_npmUser":{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"},"repository":{"url":"git+https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro.git","type":"git"},"_npmVersion":"10.8.2","description":"n8n community node to create tickets and upsert contacts in SmartCSRPro via the webhook API","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","eslint":"^8.57.1","prettier":"^3.8.3","typescript":"~5.3.0","@types/node":"^20.0.0","n8n-workflow":"~1.10.0","jsonc-eslint-parser":"^2.4.2","@typescript-eslint/parser":"^7.18.0","eslint-plugin-n8n-nodes-base":"^1.16.6"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-smartcsrpro_1.2.0_1781824735776_0.6871330400512294","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro","version":"1.3.0","description":"n8n community node to create tickets and upsert contacts in SmartCSRPro via the webhook API","keywords":["n8n-community-node-package","n8n","smartcsrpro","tickets","insurance"],"license":"MIT","homepage":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro","author":{"name":"Belmont Digital Marketing","email":"matthias@belmontdigitalmarketing.com"},"repository":{"type":"git","url":"git+https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro.git"},"bugs":{"url":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro/issues"},"main":"index.js","scripts":{"build":"tsc && gulp build:icons","dev":"tsc --watch","format":"prettier nodes credentials --write","lint":"eslint nodes credentials package.json","lintfix":"eslint nodes credentials package.json --fix","prepublishOnly":"npm run build && eslint -c .eslintrc.prepublish.js nodes credentials package.json"},"n8n":{"n8nNodesApiVersion":1,"credentials":["dist/credentials/SmartCsrProApi.credentials.js"],"nodes":["dist/nodes/SmartCsrPro/SmartCsrPro.node.js"]},"devDependencies":{"@types/node":"^20.0.0","@typescript-eslint/parser":"^7.18.0","eslint":"^8.57.1","eslint-plugin-n8n-nodes-base":"^1.16.6","gulp":"^4.0.2","jsonc-eslint-parser":"^2.4.2","n8n-workflow":"~1.10.0","prettier":"^3.8.3","typescript":"~5.3.0"},"peerDependencies":{"n8n-workflow":"*"},"_id":"@belmontdigitalmarketing/n8n-nodes-smartcsrpro@1.3.0","gitHead":"06e9e4e5066500b56a0afa6c06ee0f300c40a6b0","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-6FVA0jEDY+J/6GZxLhJhQ+/CiKnOmYNTKAjGcYV/4oww+zcI/ILkZep6zqDQiSqk4TIwKJVC+usKwDXNdXl+Fw==","shasum":"9828b3dda063460c70e426e3bb49f7a53c253b76","tarball":"https://registry.npmjs.org/@belmontdigitalmarketing/n8n-nodes-smartcsrpro/-/n8n-nodes-smartcsrpro-1.3.0.tgz","fileCount":10,"unpackedSize":94611,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICu9wH6xWtkZYdIusUwbj+8ykGg5o080DmZ24i4hFLumAiEA0B8Fgi1VzjfaacXdqYfOynB7MonUq1j1jUbsC6eiBUU="}]},"_npmUser":{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"},"directories":{},"maintainers":[{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-smartcsrpro_1.3.0_1787873077305_0.6379465179239097"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-23T21:50:36.641Z","modified":"2026-08-27T23:24:37.609Z","1.0.0":"2026-04-23T21:50:36.891Z","1.0.1":"2026-05-13T00:15:27.536Z","1.1.0":"2026-05-18T16:10:53.775Z","1.1.1":"2026-05-18T16:21:44.034Z","1.2.0":"2026-06-18T23:18:55.977Z","1.3.0":"2026-08-27T23:24:37.449Z"},"bugs":{"url":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro/issues"},"author":{"name":"Belmont Digital Marketing","email":"matthias@belmontdigitalmarketing.com"},"license":"MIT","homepage":"https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro","keywords":["n8n-community-node-package","n8n","smartcsrpro","tickets","insurance"],"repository":{"type":"git","url":"git+https://github.com/belmontdigitalmarketing/n8n-nodes-smartcsrpro.git"},"description":"n8n community node to create tickets and upsert contacts in SmartCSRPro via the webhook API","maintainers":[{"name":"belmontdigitalmarketing","email":"matthias@belmontdigitalmarketing.com"}],"readme":"# n8n-nodes-smartcsrpro\n\nAn [n8n](https://n8n.io/) community node that integrates with [SmartCSRPro](https://smartcsrpro.com) via its Webhook API. It can **create support tickets** and **upsert contacts** from any n8n workflow — connect it to email triggers, form submissions, Slack messages, CRM events, or any other data source.\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Prerequisites](#prerequisites)\n- [Credentials](#credentials)\n- [Node Reference](#node-reference)\n  - [Operations](#operations)\n  - [Create Ticket](#create-ticket)\n  - [Upsert Contact](#upsert-contact)\n- [Dynamic Dropdowns](#dynamic-dropdowns)\n- [Include Link to Workflow](#include-link-to-workflow)\n- [Usage Examples](#usage-examples)\n- [Idempotency / Deduplication](#idempotency--deduplication)\n- [Markdown in Details](#markdown-in-details)\n- [Compatibility](#compatibility)\n- [License](#license)\n\n## Installation\n\n### Community Node (Recommended)\n\n1. In your n8n instance, go to **Settings > Community Nodes**\n2. Select **Install**\n3. Enter `n8n-nodes-smartcsrpro`\n4. Agree to the risks and click **Install**\n\n### Manual Installation\n\nFor self-hosted n8n instances:\n\n1. Navigate to your n8n custom nodes directory:\n   ```bash\n   cd ~/.n8n/custom\n   mkdir -p node_modules/n8n-nodes-smartcsrpro\n   ```\n\n2. Copy the following files into `node_modules/n8n-nodes-smartcsrpro/`:\n   - `package.json`\n   - `dist/` folder (entire directory)\n\n3. Restart n8n:\n   ```bash\n   # Docker\n   docker restart <n8n-container-name>\n\n   # Docker Compose\n   docker-compose restart n8n\n\n   # PM2\n   pm2 restart n8n\n\n   # systemd\n   sudo systemctl restart n8n\n   ```\n\n### Manual Installation (Docker)\n\nIf running n8n in Docker, you can mount the node into the container. Place the node files at a path on the host and mount it:\n\n```bash\ndocker run -it --rm \\\n  -v ~/.n8n:/home/node/.n8n \\\n  -v /path/to/n8n-nodes-smartcsrpro:/home/node/.n8n/custom/node_modules/n8n-nodes-smartcsrpro \\\n  n8nio/n8n\n```\n\n## Prerequisites\n\n- An active **SmartCSRPro** account\n- A **Webhook Secret** — found in SmartCSRPro under **Settings > Integrations > Webhook-to-Ticket**\n- Your **Tenant Slug** — the subdomain identifier for your SmartCSRPro instance (e.g., `unified-insurance`)\n\n## Credentials\n\nWhen setting up the SmartCSRPro credential in n8n, you will need:\n\n| Field | Description | Example |\n|-------|-------------|---------|\n| **Tenant Slug** | Your tenant identifier (subdomain) | `unified-insurance` |\n| **Webhook Secret** | Secret key from SmartCSRPro Settings > Integrations > Webhook-to-Ticket | `wh_abc123...` |\n| **Base URL** | *(Optional)* Override if using a custom domain. Leave blank to use the default `https://{tenantSlug}.insforms.cc` | `https://support.unified.insure` |\n\nThe credential is automatically validated when you click **Test** — it calls the SmartCSRPro resources API to confirm the tenant slug and secret are correct.\n\n## Node Reference\n\n### Operations\n\nThe node exposes two operations, selected via the **Operation** dropdown:\n\n| Operation | What it does | Endpoint |\n|-----------|--------------|----------|\n| **Create Ticket** | Creates a support ticket | `POST /api/webhooks/inbound-ticket/{tenantSlug}` |\n| **Upsert Contact** | Creates or updates a contact, matched by AMS applicant ID | `POST /api/webhooks/contacts/{tenantSlug}` |\n\n---\n\n### Create Ticket\n\nCreates a new support ticket in SmartCSRPro.\n\n#### Main Fields\n\nThese fields are always visible:\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| **Subject** | Yes | The ticket title — becomes the main identifier on the SmartCSRPro dashboard |\n| **Details** | No | Markdown-formatted body rendered in the ticket's Details section (see [Markdown in Details](#markdown-in-details)) |\n| **Priority** | No | Ticket priority: `Low`, `Normal` (default), `High`, or `Urgent` |\n| **Assigned To** | No | Dynamic dropdown of active team members. Assigns the ticket to the selected user. If unset, falls through to SmartCSRPro's assignment chain (rules, category routing, branch default, agency default) |\n| **Due Date** | No | Date picker for the ticket due date |\n| **Client Email** | No | Client's email address — used to match or auto-create a contact record in SmartCSRPro |\n| **Tags** | No | Dynamic multi-select dropdown of the tenant's predefined tags. You can also supply tag values via an [expression](https://docs.n8n.io/code/expressions/) |\n| **Category** | No | Dynamic dropdown of ticket categories. Sets the category explicitly. If left as the default and no Form is selected, the ticket falls under \"Webhook to Ticket\". If a Form is selected, an explicit Category here overrides the form's category |\n\n#### Additional Fields\n\nClick **Add Field** to access these optional fields:\n\n| Field | Description |\n|-------|-------------|\n| **Branch** | Dynamic dropdown of active branches |\n| **Client Name** | Client's full name |\n| **Client Phone** | Client's phone number |\n| **External ID** | Your external reference ID for idempotency (see [Idempotency](#idempotency--deduplication)) |\n| **Form** | Dynamic dropdown of active forms. When set, the ticket inherits the form's category and title. When omitted, the ticket is created as a formless \"Webhook\" ticket with category \"Webhook to Ticket\" (unless you set Category explicitly) |\n| **Include Link to Workflow** | Appends a \"Generated via n8n: View Workflow\" footer to the ticket Details (see [Include Link to Workflow](#include-link-to-workflow)) |\n| **Metadata** | Free-form JSON object stored on the submission for debugging/reference |\n\n#### Output\n\nOn success, the node outputs:\n\n```json\n{\n  \"ok\": true,\n  \"ticket_id\": \"0e2de815-dea7-4023-87db-154f20dc1bad\",\n  \"ticket_number\": \"T-0E2DE815\",\n  \"url\": \"https://unified-insurance.insforms.cc/portal/tickets/0e2de815-dea7-4023-87db-154f20dc1bad\"\n}\n```\n\nIf the ticket was deduplicated via `external_id`, the response also includes `\"deduplicated\": true`.\n\n---\n\n### Upsert Contact\n\nCreates or updates a contact in SmartCSRPro, matched by **AMS applicant ID** (with email as a fallback match key). Re-running with the same applicant ID updates the existing contact rather than creating a duplicate.\n\n#### Required Fields\n\n| Field | Description |\n|-------|-------------|\n| **Applicant ID** | AMS applicant ID — the primary key used to match an existing contact within the tenant |\n| **First Name** | Contact's first name |\n| **Last Name** | Contact's last name |\n\n#### Common Fields\n\nThese are always visible:\n\n| Field | Description |\n|-------|-------------|\n| **Email** | Contact's primary email — lowercased and deduped server-side. Also used as a fallback match key when the applicant ID doesn't resolve |\n| **Cell Phone** | Contact's primary cell phone — deduped server-side |\n| **Assigned AMS Username** | Preferred assignee — matched against `users.amsUsername` on the SmartFlows side |\n| **Assigned AMS Agent Full Name** | Fallback assignee — case-insensitive \"First Last\" match against users. Used when Assigned AMS Username doesn't resolve |\n\n#### Additional Fields\n\n| Field | Description |\n|-------|-------------|\n| **Account Name** | Account or company name associated with the contact |\n| **Address Line 1** | Street address |\n| **Address Line 2** | Apartment, suite, or unit (accepted by the webhook but not currently persisted server-side) |\n| **Applicant Type** | Applicant type from the AMS (e.g. Personal, Commercial) |\n| **City** | City portion of the address |\n| **CRM ID** | External CRM identifier stored as-is on the contact record |\n| **Customer Since** | Customer-since date or label as supplied by the AMS |\n| **Include Link to Workflow** | Adds the workflow URL to this node's output as `workflowLink` (for downstream Slack messages). Does **not** write to the contact record |\n| **Lead Source** | Lead source label (e.g. Referral, Website) |\n| **Lead Status** | Lead status label (e.g. New, Quoted, Won) |\n| **State** | State or province portion of the address |\n| **ZIP** | Postal code portion of the address |\n\n#### Co-Applicant\n\nAn optional collapsible section. When any field is filled, a `coApplicant` object is sent. The co-applicant's email and cell phone are also folded into the primary contact's `emails[]` / `phones[]` for matching.\n\n| Field | Description |\n|-------|-------------|\n| **First Name** | Co-applicant's first name |\n| **Last Name** | Co-applicant's last name |\n| **Email** | Co-applicant's email |\n| **Cell Phone** | Co-applicant's cell phone |\n| **Relationship** | Relationship to the primary applicant (e.g. Spouse, Parent) |\n\n#### Output\n\nThe node outputs the API response for the upserted contact. If **Include Link to Workflow** is enabled, a `workflowLink` field is added to the output.\n\n## Dynamic Dropdowns\n\nSeveral **Create Ticket** fields use dynamic dropdowns that pull live data from your SmartCSRPro instance:\n\n- **Assigned To** — Lists all active team members (displays name + email)\n- **Category** — Lists the tenant's ticket categories\n- **Form** — Lists all active forms (displays form title + category)\n- **Branch** — Lists all active branches\n- **Tags** — Lists the tenant's predefined tags\n\nThese dropdowns refresh each time you open them, so they always reflect the current state of your SmartCSRPro configuration.\n\nYou can also use n8n [expressions](https://docs.n8n.io/code/expressions/) to set these fields dynamically from upstream node data.\n\n## Include Link to Workflow\n\nBoth operations offer an opt-in **Include Link to Workflow** toggle (default off) under Additional Fields:\n\n- **Create Ticket** — appends a `*Generated via n8n:* [View Workflow](...)` footer to the ticket **Details**.\n- **Upsert Contact** — adds the workflow URL to the node's **output** as `workflowLink` (so a downstream node, e.g. Slack, can link back). It does not write to the contact record.\n\n## Usage Examples\n\n### Minimal Ticket\n\nJust set the **Subject** field:\n\n> Subject: `Weekly reminder: Check UIG for agent notes`\n\nThis creates a ticket with Form = \"Webhook\", Category = \"Webhook to Ticket\".\n\n### Full Ticket from Upstream Data\n\nConnect the SmartCSRPro node after a trigger (e.g., a webhook, email, or form submission) and map fields using expressions:\n\n- **Subject**: `={{ $json.subject }}`\n- **Details**: `={{ $json.body }}`\n- **Priority**: `high`\n- **Assigned To**: Select from dropdown or use `={{ $json.agent_email }}`\n- **Category**: Select from dropdown (e.g. Claims) or use `={{ $json.category }}`\n- **Client Email**: `={{ $json.customer_email }}`\n- **External ID**: `={{ $json.id }}` (prevents duplicate tickets if the workflow runs again)\n\n### Upsert a Contact\n\n- **Applicant ID**: `={{ $json.applicantId }}`\n- **First Name**: `={{ $json.firstName }}`\n- **Last Name**: `={{ $json.lastName }}`\n- **Email**: `={{ $json.email }}`\n- **Cell Phone**: `={{ $json.phone }}`\n\nRe-running with the same Applicant ID updates the existing contact instead of creating a duplicate.\n\n## Idempotency / Deduplication\n\nFor **Create Ticket**, set the **External ID** field to enable deduplication. If you send the same `external_id` value twice, SmartCSRPro returns the existing ticket instead of creating a duplicate. This is useful for:\n\n- Webhook retries\n- Workflows that may re-process the same data\n- Ensuring exactly-once ticket creation\n\n**Upsert Contact** is inherently idempotent — it matches on the AMS applicant ID and updates in place.\n\n## Markdown in Details\n\nThe **Details** field supports Markdown formatting:\n\n```\n**Client Information**\nName: Jane Doe\nPhone: +1 555 123 4567\n\n**Request**\n- 2024 Honda Civic\n- VIN 1HGCM82633A123456\n\n[View policy](https://example.com/policy/123)\n```\n\nSupported syntax:\n- `# ## ###` headings\n- `**bold**` and `*italic*`\n- `- bullet lists`\n- `[link text](url)`\n- Bare URLs (auto-linked)\n\nHTML tags are **not** supported and will render as literal text.\n\n## Compatibility\n\n- **n8n version**: 0.5.0 and above\n- **Node.js**: 18.x or later\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}