Skip to content

Cloud Radial Integration

Beta — limited availability

Customer Forms is in beta and currently only available to a small group of pilot users. If your team can't see this feature in the ZAI portal, that's expected.

ZAI can import an existing Cloud Radial catalog item, auto-configure the webhook on CR's side, and embed a live submission-status iframe back into CR's thank-you page. This is the easiest way to keep existing CR forms in place while moving the workflow automation to ZAI.

What gets configured

When you import a CR catalog item with Auto-configure Cloud Radial webhook enabled, ZAI:

  1. Reads the catalog — fetches the catalog item and its questions from CR.
  2. Generates a customer form — one ZAI form field per CR question, using the CR jsonId as the field name.
  3. Provisions a webhook integration — creates the webhook URL and the field-mapping JSON that tells ZAI how to extract values from CR's payload.
  4. Writes back to CR — patches the catalog item's jsonPartnerWebhook field with the new ZAI webhook URL, and (optionally) replaces the thankYou content with an iframe embedding ZAI's status page.

End result: when a CR user submits the form, CR fires the webhook to ZAI, ZAI creates the submission and kicks off the workflow, and the user sees a live status iframe inside CR.

Walkthrough

Question to field mapping

Each CR question becomes a ZAI form field with:

CR property ZAI field
jsonId FieldName
label Label
type FieldType (text / textarea / dropdown / date / number / boolean / lookup)
isRequired Required
isUserLookup M365 user lookup
placeholder, defaultValue, info corresponding ZAI properties

CR's payload puts answers in Ticket.Questions[] keyed by jsonId. ZAI's auto-generated webhook mapping uses a predicate path per field — for example, a CR question with jsonId: "user-mobile-number" becomes $.Ticket.Questions[?(@.Id=='user-mobile-number')].Value.

Context fields (tenant, ticket id)

CR's webhook payload also includes top-level context that workflows commonly need:

ZAI field name CR payload path
tenant_id $.Company.CompanyTenantId
ticket_id $.Ticket.TicketId
company_name $.Company.CompanyName
user_email $.User.UserEmail

You don't need to add form fields for these — when the webhook fires, ZAI injects them into the submission's field values automatically and they flow to the workflow as named parameters.

Workflow field mapping

CR-imported forms use CR's jsonId as the field name, which rarely matches your workflow's step-parameter names. The form Edit page surfaces a Workflow Field Mapping card (only on CR-imported forms) so you can connect them.

For each workflow step parameter, pick the form field that supplies its value:

  1. Open the form's Edit page.
  2. Scroll to the Workflow Field Mapping card.
  3. Use the dropdowns, or click Suggest mappings for a fuzzy-name auto-match.
  4. Required-but-unmapped parameters show a warning badge.
  5. Click Save Form.

Tip

The Suggest button matches UserMobileNumberMobileNumber style names. CR's kebab-case ids (user-mobile-number) don't auto-match — adjust those manually after using Suggest.

Status iframe

The thank-you iframe ZAI writes back to CR looks like:

<iframe src="https://<your-zai-host>/f/status?ticket=@TicketId"
        style="width:100%;min-height:480px;border:0;"
        title="Request status"></iframe>

CR substitutes @TicketId with the actual PSA ticket ID at render time. The status page polls every 3 seconds and shows the overall submission status plus per-step workflow progress. Once the workflow finishes (or fails) the page stops polling.

Warning

@TicketId only resolves when the CR catalog item has Send to PSA enabled and a ticket is created. Without it the iframe will show a generic "waiting for your request" view until it times out.

Capturing a real CR webhook payload

When you're building the mapping by hand it helps to capture a real CR payload. The wizard's webhook capture button:

  1. Mints a short-lived capture URL (10 min TTL).
  2. You paste the URL into CR's jsonPartnerWebhook field temporarily.
  3. Trigger a test submission from CR.
  4. The wizard auto-fills the sample payload textarea and runs path discovery.

After capture, restore the real ZAI webhook URL on CR.