Standup

Support

Answers to common questions. Still stuck? Write to .

How do I connect my desk the first time?
  1. Disconnect the desk from other devices — for example, close the desk app on your phone. The desk talks to one device at a time.
  2. Turn on pairing mode: hold the Bluetooth button on the desk's controller for about 3 seconds, until the blue light starts blinking.
  3. Open Standup and allow Bluetooth when macOS asks.
  4. Standup finds the desk and connects on its own — the popover shows "Connecting…" and then the desk's name. There is no separate pairing step on the Mac.

After that, Standup reconnects automatically whenever it starts and after your Mac wakes up.

Standup can't find my desk

Try these in order:

  1. Close any other app connected to the desk (a phone app, another Mac). The desk talks to one device at a time.
  2. Allow Bluetooth for Standup in System Settings → Privacy & Security → Bluetooth.
  3. Make sure the desk's name in Bluetooth still contains the word "Desk".
  4. Turn on pairing mode: hold the Bluetooth button on the controller for about 3 seconds, until the light blinks.
  5. Reset the desk: lower it as far as it goes, hold the lower button until the desk jumps down and up, then hold the Bluetooth button on the controller until the light blinks, and open Standup again.
How do I use Outlook meetings?

Standup reads the macOS Calendar. Add your Outlook, Exchange or Microsoft 365 account in System Settings → Internet Accounts and make sure Calendars is switched on for it. The account then shows up in the Calendar app and Standup sees its meetings. Allow calendar access when Standup asks.

Which meetings raise the desk?

Meetings that have other attendees, contain an online meeting link (Teams, Meet, Zoom, Webex, Whereby or GoToMeeting) in the URL, location or notes, and that you organise or have accepted. All-day events, cancelled, declined, tentative or unanswered invitations and events marked as "free" are ignored. The desk starts rising a couple of minutes before the start (you can change the lead time in Preferences).

Why did the desk not move for my meeting?

Check that the feature is on (Stand during meetings), that the meeting matches the rules above, and that the desk is connected. If you lowered the desk yourself during a meeting, Standup does not raise it again for that meeting.

What is the little nudge before the desk moves?

Before an automatic move the desk nudges twice in the direction it is about to travel and waits a second, so it never moves without a warning. Turn it off in Preferences with Nudge the desk before it moves. Moves you start yourself are always immediate.

What does call detection do, and is my audio recorded?

If you turn on Keep raised while on a call, the desk stays up after the scheduled end while a meeting app is still using the microphone or speaker, and goes down shortly after they go quiet. Standup only sees that an app is using audio and which app — it never records or accesses any audio or video, and it does not ask for microphone or camera permission.

The desk stops a little short or a little past my preset height

Standup learns how far your desk rolls after a stop and corrects itself after a few moves. If it stays off by more than about half a centimetre, write to us with the two heights.

Can I control the desk from a script or Shortcuts?

Yes. Standup understands these AppleScript commands:

tell application "Standup" to move desk "stand"    -- or "sit", "up", "down"
tell application "Standup" to set desk height "120cm"  -- or "48in", or just "80"

In Shortcuts, add a Run AppleScript action with one of those lines. macOS asks once for permission to control Standup.

The meeting ended early — can the desk go down sooner?

Yes, with Keep raised while on a call on. When the meeting app's microphone and speaker go quiet before the scheduled end, a notification asks Meeting over? Lower the desk?. After half-time it asks right away; in the first half of the meeting it waits two quiet minutes, in case your connection just dropped. It asks once per meeting and only while the desk is up.

Can Standup switch Home Assistant scenes? (coming soon)

Coming soon — not in the current App Store release yet. You will be able to enter a webhook URL in Preferences → Webhook. When the desk goes up for a meeting and when it goes down afterwards, Standup sends a POST with a small JSON body:

{
  "app": "Standup",
  "event": "meeting_started",
  "source": "calendar",
  "meeting": "Weekly sync",
  "desk": "stand",
  "height_cm": 110.2,
  "timestamp": "2026-10-01T09:58:00Z"
}

event is meeting_started or meeting_ended, source is calendar or unplanned_call. Moving the desk yourself sends nothing. A Send test button checks the connection.

In Home Assistant, create an automation with a webhook trigger and point Standup at http://homeassistant.local:8123/api/webhook/standup:

alias: Standup meetings
triggers:
  - trigger: webhook
    webhook_id: standup
    allowed_methods: [POST]
    local_only: true
actions:
  - choose:
      - conditions: "{{ trigger.json.event == 'meeting_started' }}"
        sequence:
          - action: scene.turn_on
            target: { entity_id: scene.office_meeting }
      - conditions: "{{ trigger.json.event == 'meeting_ended' }}"
        sequence:
          - action: scene.turn_on
            target: { entity_id: scene.office_focus }
How do I try my Home Assistant scene with "Send test"? (coming soon)

By default Send test only checks the connection — it sends "event": "test", which does not start a meeting. To use the button as an on/off switch for your meeting scene, let the webhook drive a helper (input_boolean) and attach the scene to that helper. The first test then switches the scene on, the second one switches it off and restores the lights. Put this in a package (for example packages/standup.yaml) and adjust the lights:

input_boolean:
  standup_meeting:
    name: "Standup meeting"

automation:
  - alias: "Standup - webhook"
    mode: queued
    triggers:
      - trigger: webhook
        webhook_id: standup-YOUR-RANDOM-ID
        allowed_methods: [POST]
        local_only: false
    actions:
      - choose:
          - conditions: "{{ trigger.json.event == 'meeting_started' }}"
            sequence:
              - action: input_boolean.turn_on
                target: { entity_id: input_boolean.standup_meeting }
          - conditions: "{{ trigger.json.event == 'meeting_ended' }}"
            sequence:
              - action: input_boolean.turn_off
                target: { entity_id: input_boolean.standup_meeting }
          # "Send test" switches the meeting scene on, the next test switches it off
          - conditions: "{{ trigger.json.event == 'test' }}"
            sequence:
              - action: input_boolean.toggle
                target: { entity_id: input_boolean.standup_meeting }

  - alias: "Standup - meeting scene"
    triggers:
      - trigger: state
        entity_id: input_boolean.standup_meeting
        from: "off"
        to: "on"
    actions:
      # Remember the lights first, so they can be restored afterwards
      - action: scene.create
        data:
          scene_id: standup_before_meeting
          snapshot_entities: [light.living_room, light.hallway, light.desk_lamp]
      - action: light.turn_off
        target: { entity_id: [light.living_room, light.hallway] }
      - action: light.turn_on
        target: { entity_id: light.desk_lamp }

  - alias: "Standup - after the meeting"
    triggers:
      - trigger: state
        entity_id: input_boolean.standup_meeting
        from: "on"
        to: "off"
    conditions:
      - condition: template
        value_template: "{{ states.scene.standup_before_meeting is not none }}"
    actions:
      - action: scene.turn_on
        target: { entity_id: scene.standup_before_meeting }

Tips:

  • Use a long random webhook_id if Home Assistant is reachable from the internet — the URL is the only thing protecting it.
  • Don't check the saved scene for the state unknown: a scene made by scene.create stays unknown until it is used, so such a condition would stop the lights from ever coming back.
  • Click Send test once, wait for the scene, then click again. Clicking many times quickly can make the scene remember lights that are already off.
  • Reload automations and helpers (or restart Home Assistant) after editing the package.
Can I move the desk with keyboard shortcuts?

Yes, with the Shortcuts app. Make one shortcut for each action:

  1. Open Shortcuts and create a new shortcut, for example "Desk: stand".
  2. Add a Run AppleScript action with tell application "Standup" to move desk "stand". For the other shortcuts use "sit", "up" or "down".
  3. Open the shortcut's details (ⓘ), choose Add Keyboard Shortcut and press the keys, for example ⌃⌥↑ / ⌃⌥↓ for up and down and ⌃⌥S / ⌃⌥D for stand and sit.
  4. The first time you use it, allow Shortcuts to control Standup.

The shortcuts work in every app. up and down move the desk about 1 cm per press; holding the keys does not keep it moving.

How do I start Standup at login, or quit it?

Open Preferences from the "…" menu in the popover and switch on Open at login. Choose Quit from the same menu to close the app.

Contact

Email: . The free open-source edition (without meeting automation) takes bug reports on GitHub.