> ## Documentation Index
> Fetch the complete documentation index at: https://help.clinikehr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Turn on the patient portal

> Switch on the client portal, set its name and web address, and publish it so patients can sign in and use it.

export const StillStuck = ({topic}) => <div className="ck-callout ck-callout--note" role="note">
    <p className="ck-callout__body">
      <strong>Still stuck{topic ? ` with ${topic}` : ''}?</strong>{' '}
      Check <a href="/platform/help/troubleshooting">Troubleshooting</a> first —
      it covers the failures we see most often. If that does not resolve it,{' '}
      <a href="/platform/help/contact-support">contact support</a> and include
      your workspace name and the time the problem happened, so we can find the
      matching entry in your audit log.
    </p>
  </div>;

export const TaskHeader = ({before, time, after}) => <div className="ck-task">
    {before ? <div className="ck-task__cell">
        <div className="ck-task__title">Before you start</div>
        <p className="ck-task__body">{before}</p>
      </div> : null}

    {time ? <div className="ck-task__cell">
        <div className="ck-task__title">Takes about</div>
        <p className="ck-task__body">{time}</p>
      </div> : null}

    {after ? <div className="ck-task__cell">
        <div className="ck-task__title">When you're done</div>
        <p className="ck-task__body">{after}</p>
      </div> : null}
  </div>;

export const Path = ({steps = []}) => <span className="ck-path">
    {steps.map((s, i) => <span key={i} className="ck-path__step">
        {i > 0 ? <span className="ck-path__sep" aria-hidden="true">
            ›
          </span> : null}
        {s}
      </span>)}
  </span>;

export const Availability = ({editions = ['all'], plans, roles, note}) => {
  const list = editions.includes('all') ? ['clinic', 'pharmacy', 'lims'] : editions;
  return <div className="ck-avail" role="note" aria-label="Feature availability">
      <span className="ck-avail__label">Available in</span>

      {list.map(e => <span key={e} className={`ck-pill ck-pill--${e}`}>
          {EDITION_LABELS[e] || e}
        </span>)}

      {plans ? <span className="ck-avail__label">Plan</span> : null}
      {plans ? <span className="ck-pill ck-pill--plan">{plans}</span> : null}

      {roles ? <span className="ck-avail__label">Who</span> : null}
      {roles ? <span className="ck-pill ck-pill--role">{roles}</span> : null}

      {note ? <span className="ck-avail__note">{note}</span> : null}
    </div>;
};

<Availability editions={['all']} plans="Starter and above" roles="Owner" />

The client portal is a website of your own where the people you care for sign in to see appointments, sign documents, join video visits and message you. This page gets it switched on, named, addressed and published.

<Path steps={['Settings', 'Client portal', 'Client Portal']} />

<Note>
  The product changes this word to match your edition, so your sidebar may say **Patient portal** and **Patient Portal** instead. Everything on this page works the same either way.
</Note>

<TaskHeader before="An owner account on a Starter plan or above" time="About five minutes" after="A live portal at your own address, ready for patients to sign in" />

## Turn it on and publish

<Steps>
  <Step title="Open the portal settings">
    Go to **Settings**, find the **Client portal** group in the settings sidebar, and select **Client Portal**.

    The card at the top holds the master switch, your portal's web address and the publish button. Below it are seven tabs: **Branding**, **Appointments**, **Messaging**, **Telehealth**, **Documents**, **Notifications** and **Privacy**.
  </Step>

  <Step title="Switch the master toggle on">
    Turn **Client Portal** on. The sublabel underneath tells you where you stand: **Currently disabled**, **Active & accessible**, or **Requires upgrade** if your plan does not include the portal.

    With the master switch off, nobody can sign in — whatever any individual record says.
  </Step>

  <Step title="Name the portal and set its address">
    Open the **Branding** tab and fill in **Portal Name** — for example "Sunrise Health Portal". A **URL Slug** is generated from it, and that slug is the last part of your portal's web address.

    The slug is checked as you type: at least three characters, no reserved or offensive words, and not already taken by another practice. A slug that fails the check blocks saving until you change it.

    Pick something short that a patient can read out over the phone. Changing it later breaks every link you have already sent.
  </Step>

  <Step title="Save">
    **Save** stays unavailable until both **Portal Name** and **URL Slug** are set. Until then the card at the top says "Set a URL slug in Branding to publish your portal".

    While you are in **Branding**, add your logo and colours too — see [Brand your portal](/portal/setup/branding).
  </Step>

  <Step title="Publish it">
    Back on the top card, select the publish button. Your portal goes live at the address shown on the chip — `client.clinikehr.com/` followed by your slug — and the button becomes a green pulsing **Live**.

    Use the copy and open buttons on that chip to grab the address or view the portal as a patient sees it.
  </Step>
</Steps>

<Warning>
  **The green Live button is not a save button.** Once your portal is published, selecting it **unpublishes** the portal — its tooltip reads "Unpublish Client Portal" and you get the message "Portal unpublished successfully". Patients can no longer reach it. If you unpublish by accident, select the button again to publish it back.
</Warning>

## Check it worked

Three things tell you the portal is genuinely live:

1. The master switch's sublabel reads **Active & accessible**.
2. The button on the top card is a green pulsing **Live**.
3. Opening the address on the chip in a private browser window shows your clinic's welcome page with **Existing Patient**, **New Patient** and a **Sign In** link.

Now give one real person access and sign in as them — see [Give a patient portal access](/portal/setup/invite-patients). A published portal with nobody enabled on it does nothing.

## Two switches, not one

This is the single most common source of "the portal isn't working" tickets. A person can only sign in when **both** of these are true:

| Switch                 | Where it lives                                                                    | What it controls                             |
| ---------------------- | --------------------------------------------------------------------------------- | -------------------------------------------- |
| The clinic-wide portal | **Settings › Client portal › Client Portal**                                      | Whether the portal exists at all, for anyone |
| That person's access   | The client record's **Portal** tab, the document-share flow, or waitlist approval | Whether that individual may sign in          |

If the clinic-wide portal is off, the **Portal** tab on a client record shows an amber notice: "Clinic portal is currently disabled — The client portal is globally disabled for your clinic. You can enable it in Settings > Client Portal to allow clients to log in."

## What each plan includes

| Capability                                                        | Requires                                                                                          |
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| The portal at all                                                 | Starter and above — on Free you see an "Unlock the Client Portal" overlay instead of the settings |
| Secure messaging                                                  | Essential and above                                                                               |
| The **Notifications** tab (reminders and alerts)                  | Essential and above                                                                               |
| The **Portal** tab on a client record, to grant access per person | Essential and above                                                                               |
| Uploading a custom telehealth background                          | Essential and above — blur and the supplied backgrounds work on every plan                        |
| Editing any portal setting                                        | The practice owner. Other staff see the settings read-only                                        |

A locked tab shows an amber shield. If a paid plan lapses it counts as Free and the portal goes away with it, so keep billing current if patients depend on it. See [Change your plan](/platform/plans/change-plan) and [Roles and permissions](/platform/team/roles).

## No custom domain

The portal always lives at `client.clinikehr.com/` followed by your slug. It does **not** support a domain of your own, and there is no setting for one.

Custom domains do exist elsewhere in ClinikEHR — for booking pages, your store, memberships, contact forms and agents — which is why people go looking. The portal is not one of them, so put the `client.clinikehr.com` address on your website and in your emails rather than waiting for a custom one.

## If something goes wrong

<AccordionGroup>
  <Accordion title="Save is greyed out">
    Both **Portal Name** and **URL Slug** must be filled in, and the slug must pass its check. Open the **Branding** tab; the field with the problem is marked there. A slug that is too short, reserved, offensive or already taken by another practice blocks saving until you change it.
  </Accordion>

  <Accordion title="The settings are read-only for me">
    Only the practice owner can change portal settings. Managers and staff can look but not edit. Ask your owner to make the change, or see [Roles and permissions](/platform/team/roles).
  </Accordion>

  <Accordion title="The switch says Requires upgrade">
    Your plan does not include the portal, or a paid plan has lapsed and reverted to Free. See [Change your plan](/platform/plans/change-plan).
  </Accordion>

  <Accordion title="Some tabs have an amber shield on them">
    Those tabs need a higher plan — messaging and notifications need Essential and above. The rest of the settings still save normally.
  </Accordion>

  <Accordion title="A patient says the portal address does not work">
    Check the button on the top card is a green **Live**. If it is not, the portal is unpublished — select it to publish. Then confirm the person is using the exact address on the chip, including your slug, and that their individual access is enabled.
  </Accordion>
</AccordionGroup>

## Next

<Columns cols={2}>
  <Card title="Give a patient portal access" icon="https://mintcdn.com/clinikehr/nLyvBRumcl1Yk8z3/images/icons/user-check.svg?fit=max&auto=format&n=nLyvBRumcl1Yk8z3&q=85&s=98fa42f392a22265b263f2ea5710cbc0" href="/portal/setup/invite-patients" width="24" height="24" data-path="images/icons/user-check.svg">
    The three ways a person gets in, and the email-address trap.
  </Card>

  <Card title="Choose what patients can see and do" icon="https://mintcdn.com/clinikehr/nLyvBRumcl1Yk8z3/images/icons/sliders.svg?fit=max&auto=format&n=nLyvBRumcl1Yk8z3&q=85&s=beb6145918f561fc91f4eaa0aa591390" href="/portal/setup/features" width="24" height="24" data-path="images/icons/sliders.svg">
    All seven settings tabs, one by one.
  </Card>
</Columns>

<StillStuck />
