Skip to main content
If you’re integrating with Acuity, contact Acuity support to change your merge setting so that clients are only merged when they share the same first name, last name and phone number. Acuity’s default merges clients on first name and last name alone.

Overview

Morf enables respondents to schedule appointments within a Feathery flow through two integration points:
  1. Time Slot Selection Step (iframe) — Embeds the Morf scheduling UI inside a Feathery step. Displays real-time availability from your scheduling service and allows respondents to select a time slot.
  2. Booking in Progress Step (logic rule) — Schedules the appointment in your scheduling service using the selected time slot and the respondent’s submitted information.
These components are configured independently, allowing flexible form customization. For example, respondents can select a provider and time slot early in the flow, complete insurance or payment details, and confirm the appointment later.

Prerequisites

Before you begin, confirm you have:
  1. A Morf organization.
  2. Your branding details shared with Morf (or use default branding).
  3. Provider data entered into the Morf provider dashboard.
  4. Completed the baseline Feathery Setup Instructions.
  5. Feathery fields that collect the following information before the appointment is scheduled. Confirm the field IDs match exactly:
    • first_name
    • last_name
    • phone_number
    • email_address

Instructions

0. Create a Feathery-triggered workflow in Morf

  1. Create your workflow (or use the Morf patient signup template).
  2. Configure the Profile Lookup node:
    • Lookup field → user_id
    • Profile ID → Profile ID
  3. Configure the Update Profile Properties node:
    • Store user_id as the Feathery ID.

1. Create hidden fields

Already included in the Morf patient sign-up template.
In the form, go to Settings > Data Tracking > Edit Hidden Fields and add:
  • scheduled_appt
  • scheduled_appt_id
  • scheduled_appt_datetime_formatted
  • appt_type_id
All fields are populated dynamically during form completion except appt_type_id, which must be set in the environment variables logic rule (see step 2).

2. Edit logic rule: Set Environment Variables

Already included in the Morf patient sign-up template.
Add appt_type_id to your existing Set Environment Variables custom logic rule. If you haven’t created it yet, follow the Feathery Setup Instructions.

3. Create step: Time slot selection

Already included in the Morf patient sign-up template.
  1. Create a new step in your flow named Time slot selection.
  2. Add a Container → iframe to the step.
  3. Set:
  4. Optionally hide filters by appending query parameters:
    • hideState
    • hideInsurance
    • hideSpecialties
  5. Recommended iframe height: 85vh

4. Create logic rule: Initialize time slot selection

Already included in the Morf patient sign-up template.
This rule listens for messages from the Morf scheduling UI iframe and stores the selected time slot details: providerId, timezone, appointmentTypeId, and datetime.
  1. Go to Logic > Create New Logic Rule.
  2. Name the rule Initialize time slot selection.
  3. Configure the trigger:
    • Event trigger: Form Step is Loaded
    • Step trigger: time_slot_selection
  4. Go to Advanced Logic > Edit Code and add the following. Update goToStep to use the step name that should follow time slot selection.

5. Create intermediate steps (optional)

Insert any steps to collect additional patient information — such as insurance or credit card details — before scheduling the appointment.

6. Create booking status steps

Already included in the Morf patient sign-up template.
Create three steps:
  1. Booking in progress — Triggered when the respondent views this step; initiates the appointment booking in your third-party service. Recommended styling: loading icon + “Booking your appointment…” message.
  2. Appointment confirmed — Displayed when the appointment is successfully booked. Use the scheduled_appt field to display booking details.
  3. Booking error — Displayed if the scheduling service returns an error. Recommended: instruct the user to retry time slot selection.
The response.data.message field will contain one of the following error values:

7. Add logic rule: Schedule appointment

Already included in the Morf patient sign-up template.
  1. Go to Logic > Create New Logic Rule.
  2. Name the rule Schedule appointment.
  3. Configure the trigger:
    • Event trigger: Form Element is Viewed
    • Element trigger: an element on your Booking in Progress step
  4. Go to Advanced Logic > Edit Code and add the following. Update the goToStep calls at the bottom to match your booking error and appointment confirmation step names.

8. Add Morf API connectors

Already included in the Morf patient sign-up template.
Add two API connectors in Feathery:
  1. Morf scheduling endpoint — Used to schedule the appointment in your scheduling service.
    • URL: https://questions.morf.health/api/scheduleAppointment
    • Method: POST
  2. Morf webhook URL — Used to send the “Booking in progress” step event to Morf.
    • URL: https://api.morf.healthcare/webhooks/...
    • Method: POST