> ## 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.

# Setup Assistant

> Give a partner's field staff a short-lived, limited account to help set up your catalogue, stock locations and till — nothing else.

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={['pharmacy']} roles="Owner only" note="Only the owner can grant, extend or end this access" />

Sometimes someone outside your own team — a wholesaler's rep, a franchise partner's field staff — offers to help get your catalogue loaded and your branches set up. **Setup Assistant** is how you let them do exactly that, and only that, for a set number of days.

<Path steps={['Sidebar', 'Settings', 'Pharmacy', 'Staff & Teams', 'Setup Assistant']} />

<TaskHeader before="An email address for someone who already has a ClinikEHR account" time="1 minute to grant, ends on its own" after="A helper who can build your catalogue and add locations — nothing else" />

## What a setup assistant can do

* Add and edit items in your product catalogue
* Import a catalogue file
* Add stock locations (branches, rooms, shelves)

On a paid pharmacy a setup assistant is never held to the Free plan's 20-item and 5-location caps. If the plan cannot be checked for them, they see no plan strip at all rather than a wrong one.

## What a setup assistant can never do

* Sell, refund, void or dispense anything at the till
* See or edit your customers or patients
* See wallets, debts, sales figures, reports, cost prices, margins or your net position
* See or manage your other staff, permissions, subscription or API access
* Export anything
* Change the price of an item that already exists

Because cost prices are hidden from them, editing an item leaves its **Unit cost** exactly as you recorded it.

A setup assistant only ever reaches the **Inventory** screen — nowhere else in ClinikEHR opens for them.

## It always ends on its own

Every grant has an end date — **14 days by default, 30 days at the most**. There is no way to grant it "until further notice." When the date passes, their access stops immediately, everywhere, without you doing anything. If they try to sign in after that, they see a plain screen telling them their access has ended.

<Note>
  Granting this role does not use up one of your paid staff seats' billing — but it does still count against your plan's staff limit while it is active, the same as any other account. If you are at your limit, end an inactive account first or upgrade before granting Setup Assistant.
</Note>

## Grant access

<Steps>
  <Step title="Open Staff & Teams → Setup Assistant">
    You will only see this card if you are the pharmacy's owner.
  </Step>

  <Step title="Select Grant access">
    Enter the person's email address. **They must already have a ClinikEHR account** — this does not send an invitation email or create a new account for them.
  </Step>

  <Step title="Set when it ends">
    Pick a date up to 30 days out. It defaults to 14 days.
  </Step>

  <Step title="Select Grant access to confirm">
    They can sign in and reach Inventory as soon as you save.
  </Step>
</Steps>

## Extend or end it early

From the same card, each person you have granted access to shows **Extend** and **Revoke**:

* **Extend** moves the end date out, still capped at 30 days from today.
* **Revoke** ends their access immediately. Anything they already added or edited to your catalogue stays exactly as it is — revoking does not delete anything.

<StillStuck />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.