cloudradial

n8n community nodes for CloudRadial (MSP client portal): full v2 API coverage, entity polling trigger, and form-submission webhook trigger

Documentation

n8n-nodes-cloudradial

n8n community nodes for CloudRadial (MSP client portal
platform). Full coverage of the CloudRadial v2 API plus two trigger nodes.

Building workflows against these nodes (human or LLM)? USAGE.md is the
exact parameter-level contract: node type names, resource/operation/parameter values,
output shapes, and gotchas.

Nodes:

  • CloudRadial — action node covering all 29 v2 API resources
  • CloudRadial Trigger — polling trigger: fires when records are created or updated
  • CloudRadial Form Trigger — webhook trigger for form submissions (requires a
    publicly reachable n8n instance)

Installation

Community node installation: Settings → Community Nodes → Install →
n8n-nodes-cloudradial. See the
n8n docs for details.

Credentials

Generate an API key pair in CloudRadial under Partner > Settings > Integrations
(under Configuration) > API > +Add API Key
. The Private Key is shown only once.

Field Value
Public Key API key pair public key (Basic auth username)
Private Key API key pair private key (Basic auth password)
API Base URL https://api.us.cloudradial.com unless CloudRadial tells you otherwise
Portal Base URL Your branded portal domain, e.g. https://portal.example.com — used to build formUrl deep links on Catalog items; optional

The CloudRadial node

Resources: Archive Item, Article, Assessment, Catalog Item, Catalog Question,
Certificate, Company, Company Group, Company Group Member, Course, Course Enrollment,
Course Lesson, Course Lesson History, Domain, Endpoint, Endpoint Application, Endpoint
Custom Property, Feedback, Flexible Asset, Flexible Asset Field, Flexible Asset Type,
Media, Menu, Product, Quickstart, Service, Service Install, Token, User.

Semantics worth knowing:

  • Get Many uses the OData endpoints: optional Company filter, raw $filter,
    $orderby, $select, and Return All paging. Soft-deleted rows are excluded by
    default where the entity supports it (Options → Include Deleted).
  • Get looks the record up via OData on its key field — this avoids the API's hidden
    companyId query-parameter requirements on singular reads.
  • Create takes a raw JSON body matching the API schema. Update sends JSON Patch
    (RFC 6902): either simple field/value pairs or raw patch operations.
  • Catalog Items returned by Get/Get Many carry a computed formUrl — the
    per-company portal deep link (/app/service/request/{id} or /app/service/report/{id})
    built from your Portal Base URL. Catalog rows are per-company: resolve the right
    company's row, never match forms by subject text (subjects are not unique).
  • Catalog Item → Get can attach the form's question definitions
    (Include Questions) and resolve Template-type questions to the partner template's
    real question set (Resolve Template Questions). Note: per-option conditional-reveal
    wiring is not exposed by the API — childQuestionIds lists all conditionally revealed
    questions of a parent without saying which option reveals which.
  • Tokens (@-prefixed template variables) are keyed by name + company scope;
    company scope 0 is the partner-level (global) scope. Get Many uses the REST list
    because the OData token entity omits partner-scope rows entirely.
  • Endpoints can be addressed by serial number, machine name + manufacturer, or
    endpoint ID. Update Warranty does not support ID addressing (API limitation).
  • There is no Ticket resource — by design. CloudRadial hands tickets to your PSA and
    keeps only routing/cross-reference data (psa* fields). Do ticket work in your PSA's
    node and join on the psa* keys.

CloudRadial Trigger (polling)

Watches a resource for Record Created or Record Updated events using
dateCreated/dateModified cursors (Company and Endpoint use their monotonic integer
IDs and support Created only, as do a few other resources without a modification
timestamp). Optional per-company filtering and soft-delete inclusion. The first poll
initializes the cursor and emits nothing — history is not replayed. Manual execution
returns the newest matching record as a sample.

Form submissions are not pollable — submissions become PSA tickets, not CloudRadial
records. Trigger those workflows from your PSA (submitted answers marked "include in
ticket" are folded into the PSA ticket), or use the Form Trigger below if your n8n
instance is publicly reachable.

CloudRadial Form Trigger (webhook)

Receives CloudRadial's outbound JSON webhooks, which fire on Problem Report / Service
Request / Feedback submission (plus Policy and Report Archive alerts). Paste the node's
webhook URL into the form's Routing settings in CloudRadial. Payload top-level
objects: User, Company, Ticket, Feedback, Routing, Agent, and Questions[];
the node optionally adds a flattened questionsById map. CloudRadial does not sign
webhooks — set a Secret Token and append ?token=... to the URL you paste.

Known limitations

  • Media/Assessment binary uploads are implemented but not yet exercised against a live
    instance — verify before relying on them.
  • Archive Item attachment upload exists only on CloudRadial's legacy v1 API and is not
    implemented; the v2 Create operation creates metadata-only items.
  • CloudRadial advertises no rate limits (no X-RateLimit-* headers). Poll conservatively.
  • Every API response carries an x-documentation-url header linking a per-request debug
    log — useful when working with CloudRadial support.

License

MIT

Discussion