Zenoti setup starts and stays visible in QR Rx. Your Zenoti Customer Success Manager enables the required package, then your organization administrator enters the center and read-only API details, installs the completed-appointment webhook, and verifies one test appointment.
Who should do thisZenoti organization administrator
Who enables accessYour Zenoti CSM
Event to selectAppointment → Completed
Safe starting modeReview every draft before sending
You do not need to build an integration.
Zenoti already supports completed-appointment notifications. QR Rx provides the private URL and security values. Your team copies them into Zenoti with help from your CSM. Zenoti requires an active API and webhook access for this feature. Your CSM can confirm what is included in your package.
1. Ask your Zenoti CSM to confirm access
You are contacting your Zenoti CSM for this step. Copy this message:
Hi [CSM NAME],
We are connecting our Zenoti account to QR Rx for post-visit aftercare.
Please confirm whether our Zenoti package supports the Appointment Completed webhook and restricted, read-only API access for the centers below:
[LIST CENTERS]
If available, please issue a separate API key for the QR Rx app with only the access needed to read invoice, appointment, guest, center, and service-catalog details. We do not need booking, payment, refund, membership, or other write access.
Thank you.
2. Create the connection in QR Rx
You are working in QR Rx for this step.
Open Settings → Integrations and select Zenoti.
Choose the matching QR Rx clinic location.
Enter the Zenoti center ID and the restricted API key.
Save the generated webhook secret in your password manager, then click Create Zenoti setup.
Copy the webhook endpoint and required header name shown on the connection card.
Enter the API key only in the secure QR Rx form. Never email it or include it in a support ticket.
3. Add the completed-appointment webhook
Your Zenoti organization administrator is working in Zenoti for this step.
At the organization level, open Configuration.
Open Integrations → Webhooks.
Click Create a webhook.
Under Appointment, select Completed, then click Next.
Enter the name QR Rx completed appointments.
Choose POST as the request type.
Choose the applicable center subscription.
Paste the QR Rx endpoint as the URL.
Use X-QR-Rx-Zenoti-Secret as the Header Key and the saved webhook secret as its value.
Review the details, then click Complete.
Zenoti's completion notice identifies the invoice, center, appointment, and service. QR Rx then uses restricted invoice access to retrieve the matching guest information. This is why both the webhook and limited API access are required.
4. Verify access and map the service catalog
Return to the Zenoti connection in QR Rx and click Test configuration.
Click Sync Zenoti services. This imports stable service IDs and names, not patient records.
For each service, select the correct QR Rx template or choose No aftercare, skip automatically.
Leave uncertain or multi-service matches in review. A name suggestion is not treated as an approved mapping.
5. Complete one test appointment
Use a test guest controlled by your clinic.
Book a recognizable service at one connected center.
Mark the appointment completed in Zenoti.
Open Care Feed in QR Rx.
Confirm the guest, service, center, and appointment time.
Confirm the proposed template and the exact message preview before sending.
Repeat the delivery once and confirm a duplicate draft is not created.
Return to the Zenoti connection, choose text or email, and turn on Automatic sending. Routine eligible visits will use that channel; exceptions stay in Care Feed.
You are ready when
The test appointment appears exactly once in Care Feed.
The draft shows the correct Zenoti center and service.
The guest's name and approved contact channel are correct.
The Zenoti app has read-only, least-privilege access.
Automatic sending is enabled only after the controlled delivery and service mappings are approved.
Unmapped, incomplete, multi-service, and failed deliveries remain visible in Care Feed.
If delivery stops later
Zenoti retries failed webhooks, but it can automatically deactivate a webhook after repeated failures. Check Configuration → Integrations → Webhooksand the webhook failure log. Fix the issue before reactivating it.
Need setup help?
Open QR Rx support and include your organization name, center names, and approximate test time. Never send patient information, passwords, secrets, or API keys.