{"_id":"@benheidenreich/n8n-nodes-autocrm","_rev":"2-30db99eaec7339c1418266dd6e8bf856","name":"@benheidenreich/n8n-nodes-autocrm","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@benheidenreich/n8n-nodes-autocrm","version":"0.1.0","keywords":["n8n-community-node-package","autocrm","crm","lead-management","leads","automotive","dealership"],"author":{"name":"Benjamin Heidenreich","email":"ben.heidenreich.mail+n8n@googlemail.com"},"license":"MIT","_id":"@benheidenreich/n8n-nodes-autocrm@0.1.0","maintainers":[{"name":"benheidenreich","email":"ben.heidenreich.mail@googlemail.com"}],"homepage":"https://github.com/benheidenreich/n8n-nodes-autocrm","bugs":{"url":"https://github.com/benheidenreich/n8n-nodes-autocrm/issues"},"n8n":{"nodes":["dist/nodes/AutoCrm/AutoCrm.node.js"],"credentials":["dist/credentials/AutoCrmApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"ea3373d1e4b8888aae28556b8da3273b46894790","tarball":"https://registry.npmjs.org/@benheidenreich/n8n-nodes-autocrm/-/n8n-nodes-autocrm-0.1.0.tgz","fileCount":13,"integrity":"sha512-z9faB06TOS0Gp2SnNxtB/jZ6w5OJiXsRWdbTyjKMP2rg3Zm2IfAspkeFzoopWFkFDuA2+d5tVemG7g5cEjaPGw==","signatures":[{"sig":"MEQCIA4y4KHzY0kHjLrLD5P77yl5iOXVufqq79Lgb7mhD+LKAiAgZN9m5BEbbpCoUgbzhlK17Mtd96OgOvvHncitLdFHBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@benheidenreich%2fn8n-nodes-autocrm@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109909},"main":"dist/nodes/AutoCrm/AutoCrm.node.js","types":"./dist/nodes/AutoCrm/AutoCrm.node.d.ts","engines":{"node":">=18.10"},"gitHead":"eaf44d31ea7991ff8404462f89c72bc91fa31140","scripts":{"dev":"tsc --watch","lint":"eslint nodes credentials package.json","test":"npm run build && node test/run-tests.mjs","build":"tsc && node scripts/copy-assets.js","lintfix":"eslint nodes credentials package.json --fix","prepublishOnly":"npm run build && npm run lint"},"_npmUser":{"name":"benheidenreich","email":"ben.heidenreich.mail@googlemail.com"},"repository":{"url":"git+https://github.com/benheidenreich/n8n-nodes-autocrm.git","type":"git"},"_npmVersion":"12.0.2","description":"n8n community node for autocrm (IMAGO Informationstechnologie): create leads, assign them to branches, categories and employees, attach emails and notes, and check lead existence via the autocrm API3","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.0","typescript":"^5.5.0","@types/node":"^20.14.0","n8n-workflow":"*","@typescript-eslint/parser":"^7.15.0","eslint-plugin-n8n-nodes-base":"^1.16.3"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-autocrm_0.1.0_1788873688199_0.6019750138306201","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@benheidenreich/n8n-nodes-autocrm","version":"0.1.1","description":"n8n community node for autocrm (IMAGO Informationstechnologie): create leads, assign them to branches, categories and employees, attach emails and notes, and check lead existence via the autocrm API3","keywords":["n8n-community-node-package","autocrm","crm","lead-management","leads","automotive","dealership"],"license":"MIT","homepage":"https://github.com/benheidenreich/n8n-nodes-autocrm","author":{"name":"Benjamin Heidenreich","email":"ben.heidenreich.mail+n8n@googlemail.com"},"repository":{"type":"git","url":"git+https://github.com/benheidenreich/n8n-nodes-autocrm.git"},"engines":{"node":">=18.10"},"main":"dist/nodes/AutoCrm/AutoCrm.node.js","scripts":{"build":"tsc && node scripts/copy-assets.js","dev":"tsc --watch","lint":"eslint nodes credentials package.json","lintfix":"eslint nodes credentials package.json --fix","prepublishOnly":"npm run build && npm run lint","test":"npm run build && node test/run-tests.mjs"},"publishConfig":{"access":"public"},"n8n":{"n8nNodesApiVersion":1,"credentials":["dist/credentials/AutoCrmApi.credentials.js"],"nodes":["dist/nodes/AutoCrm/AutoCrm.node.js"]},"devDependencies":{"@types/node":"^20.14.0","@typescript-eslint/parser":"^7.15.0","eslint":"^8.57.0","eslint-plugin-n8n-nodes-base":"^1.16.3","n8n-workflow":"*","typescript":"^5.5.0"},"peerDependencies":{"n8n-workflow":"*"},"gitHead":"a7e01fc27e279c5917fcbc2936cf4a6fa572af96","types":"./dist/nodes/AutoCrm/AutoCrm.node.d.ts","_id":"@benheidenreich/n8n-nodes-autocrm@0.1.1","bugs":{"url":"https://github.com/benheidenreich/n8n-nodes-autocrm/issues"},"_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-u4K/KoSl7z6+qTGStQCdTaEh1Opxsas7hgd6/EGejRh8Fp0t7kRYRcVGxLOItjNU2vIX+1ZZaMU2CFCGfyx8mA==","shasum":"0ebdde17b97508f0e471df9f3826fa84de911d00","tarball":"https://registry.npmjs.org/@benheidenreich/n8n-nodes-autocrm/-/n8n-nodes-autocrm-0.1.1.tgz","fileCount":14,"unpackedSize":113023,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@benheidenreich%2fn8n-nodes-autocrm@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDQH41ia5xVxMdL7jxQXLGWa3zOkbiLL5JEVRdRgomhyQIhALiV4qbpgUnaxnM2xS0jnqEtTihlzBzqhcOk7WHuvt9h"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bf58bb17-f075-46bd-9ffb-7e7b70fe1499"}},"directories":{},"maintainers":[{"name":"benheidenreich","email":"ben.heidenreich.mail@googlemail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-autocrm_0.1.1_1788887076088_0.14638445947187217"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-08T13:21:27.992Z","modified":"2026-09-08T17:04:36.503Z","0.1.0":"2026-09-08T13:21:28.348Z","0.1.1":"2026-09-08T17:04:36.219Z"},"bugs":{"url":"https://github.com/benheidenreich/n8n-nodes-autocrm/issues"},"author":{"name":"Benjamin Heidenreich","email":"ben.heidenreich.mail+n8n@googlemail.com"},"license":"MIT","homepage":"https://github.com/benheidenreich/n8n-nodes-autocrm","keywords":["n8n-community-node-package","autocrm","crm","lead-management","leads","automotive","dealership"],"repository":{"type":"git","url":"git+https://github.com/benheidenreich/n8n-nodes-autocrm.git"},"description":"n8n community node for autocrm (IMAGO Informationstechnologie): create leads, assign them to branches, categories and employees, attach emails and notes, and check lead existence via the autocrm API3","maintainers":[{"name":"benheidenreich","email":"ben.heidenreich.mail@googlemail.com"}],"readme":"# @benheidenreich/n8n-nodes-autocrm\n\nThis is an n8n community node. It lets you use [autocrm](https://www.autocrm.de) in your n8n workflows.\n\nautocrm is a lead management CRM for automotive dealerships by IMAGO Informationstechnologie GmbH. This node talks to the autocrm API3 (version 3.5) to create leads, assign them to branches, categories and employees, and to document emails and notes in the lead history.\n\n[n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.\n\n[Installation](#installation)\n[Operations](#operations)\n[Credentials](#credentials)\n[Compatibility](#compatibility)\n[Usage](#usage)\n[Resources](#resources)\n[Version history](#version-history)\n\n## Installation\n\nFollow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.\n\nPackage name: `@benheidenreich/n8n-nodes-autocrm`\n\n## Operations\n\n**Lead**\n\n- Create — create a new lead together with its contact (`NeueAnfrage`)\n- Assign — assign a lead to a branch, category and employee or team (`AnfrageZuweisen`)\n- Attach Email — archive an already sent or received email (.eml) in the lead history (`AnfrageEmail`). **This does not send anything** — send the email first, e.g. with n8n's built-in Send Email node, then attach it here.\n- Add Note — add a note, optionally with file attachments, to the lead history (`AnfrageNotiz`)\n- Exists — check whether a lead exists and, if it was merged away, which lead its content lives in now (`AnfrageVorhanden`)\n\n## Credentials\n\nYou need an API user for the autocrm API3. Credentials (username and password for HTTP Basic Auth) are issued by autocrm support; the valid values for branch IDs, sources and categories are tenant-specific and also come from support.\n\n1. In n8n, create new **autocrm API** credentials.\n2. Keep the default **Base URL** (`https://www.autocrm.de/api/api3`) unless support tells you otherwise.\n3. Enter the **Username** and **Password** of the API user.\n\nThe credential test performs a real, read-only API call (`AnfrageVorhanden` for lead ID 1). Any JSON answer from the API proves the credentials are valid — even when it reports a permission error for that particular function.\n\n**Important:** autocrm allows only **one request at a time per API user**. Use a dedicated API user for your n8n instance and do not share it with other integrations running in parallel.\n\n## Compatibility\n\n- Requires n8n running on Node.js 18.10 or newer (the node uses native `fetch`).\n- Implements autocrm API3, interface version 3.5.\n- No runtime dependencies.\n\n## Usage\n\nA typical outbound pipeline:\n\n1. **Create** the lead from your web form or portal data — the output contains `id-anfrage` (the lead ID for all further operations) and `id-kontakt`.\n2. Send the confirmation email to the customer with n8n's **Send Email** node (autocrm has no API function for sending).\n3. **Attach Email** to document that email in the lead history (from a binary `.eml` field, or as raw RFC 822 text that the node base64-encodes).\n4. **Assign** the lead to the responsible employee or team.\n\n### The two email address traps\n\n| Field | Expected address |\n|---|---|\n| Create → Assignee Email (`bearbeiter`) | The employee's **autocrm login** address |\n| Assign → Employee Email (`email`) | The employee's **external dealership** address |\n\nAssigning without an employee email (Assign To: Team) assigns the lead to the responsible **team** of the branch and category — it does not mean \"unchanged\".\n\n### API field names of the ID parameters\n\nThe node's parameter descriptions stay free of the raw API field names; this is where they are documented:\n\n| Node parameter | autocrm API field |\n|---|---|\n| Lead ID | `id-anfrage` |\n| Contact ID | `x-id-kontakt` |\n| External Lead ID | `x-id-anfrage` |\n| Vehicle → Vehicle ID | `x-id-fahrzeug` |\n\n### Contact upsert semantics (Create)\n\n`Contact ID` (`x-id-kontakt`) is the ID of the contact in **your** system and acts as an upsert key. If autocrm already knows the ID, the lead is attached to the existing contact and all other contact fields are silently ignored (except License Plate). Check `neuer-kontakt` in the output: `false` for an ID you just generated means the ID collided with an existing contact.\n\n### Rate limits and serialization\n\nautocrm enforces throughput limits per function and allows only one request at a time per API user:\n\n| Operation | Limit |\n|---|---|\n| Create | 3 / 60 s |\n| Assign, Attach Email, Add Note | 5 / 60 s each |\n| Exists | 150 / 60 s |\n\nThe node serializes its requests per credential within one n8n process and automatically retries temporary errors (HTTP 429/503, `fehler_parallel`, `fehler_mengengeruest`, `fehler_tmp`) up to two times, honoring the `Retry-After` header (capped at 30 s per wait). For bulk imports, slow the workflow down (e.g. Loop Over Items with a Wait node) — the Create limit of 3 per 60 seconds is the bottleneck.\n\nNote that the serialization is per process: with n8n in queue mode across several workers, or several n8n instances sharing one API user, the retries are what catch `fehler_parallel`. Use one API user per n8n installation.\n\n### Error statuses\n\nA call counts as successful only when it returns HTTP 2xx **and** `status: \"OK\"` — the node checks both.\n\n| Status error | Meaning |\n|---|---|\n| `fehler_parallel` | Another request of the same API user was already running — the node has already retried automatically |\n| `fehler_mengengeruest` | Throughput limit exceeded → slow the workflow down |\n| `fehler_tmp` | Temporary condition, e.g. a phone call is in progress on the lead → retry later |\n| `fehler_input:<detail>:<field>` | Input error, e.g. `id_unbekannt:data.id-anfrage` (unknown lead ID) or `unbekannt:data.email` (no unique external employee address for that branch and category) |\n| `fehler_berechtigung` | The API user is not allowed to call this function → contact autocrm support |\n| `fehler_wartungsarbeiten` | Maintenance window → retry later |\n| HTTP 401 | Wrong credentials. The server answers with HTML instead of JSON here; the node detects that and reports it properly. |\n\n### Transport notes\n\n- The autocrm API normally answers with an HTTP 308 redirect to another subdomain. The node follows redirects manually so that method, body and the `Authorization` header survive, and remembers the redirect target for subsequent requests.\n- The node performs its HTTP requests with native `fetch` and therefore does **not** use n8n's proxy settings (`HTTP_PROXY`). The n8n host needs direct outbound HTTPS access to `www.autocrm.de` and its sibling subdomains (e.g. `www2.autocrm.de`).\n- Timestamps (Process From/By, Close By) are converted to German local time (Europe/Berlin) in the format autocrm expects. Phone numbers must be in international format (`+496301708123456`); common separators are stripped automatically.\n\n### Use as an AI Agent tool\n\nThe node is marked as `usableAsTool` — it can be attached to an n8n **AI Agent** as a tool, with parameter values filled from the model via `$fromAI`.\n\nAn importable example workflow is included in [`examples/beispiel-workflow.json`](examples/beispiel-workflow.json). **Careful:** executing it against real credentials creates a real lead in your autocrm tenant.\n\n## Resources\n\n- [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)\n- [autocrm by IMAGO Informationstechnologie GmbH](https://www.autocrm.de) — the API3 specification (PDF) is available from autocrm support\n\n## Version history\n\n- **0.1.1** — Compliance with n8n's community node verification scan: credential icon and title-cased credential display name, `NodeConnectionTypes.Main` instead of the `\"main\"` literal, all errors surfaced as `NodeApiError`/`NodeOperationError`, `sleep` from `n8n-workflow` instead of `setTimeout`. The API field names moved from the parameter descriptions into this README.\n- **0.1.0** — Initial release: Lead Create, Assign, Attach Email, Add Note and Exists; manual 308 redirect handling with credential preservation; per-user request serialization; automatic retries with Retry-After; programmatic credential test.\n","readmeFilename":"README.md"}