Skip to content

Setup Manager Configuration

motionbug edited this page May 19, 2026 · 2 revisions

Setup Manager Configuration

This page shows the Setup Manager plist keys needed to send enrollment events to Setup Manager HUD.

For the full Setup Manager reference, see Jamf's Setup Manager documentation and Webhooks.md.


Before You Start

You need two values:

Value Where to get it
Worker URL Your deployed Worker URL, ending in /webhook
Webhook token The exact value saved as the Worker WEBHOOK_TOKEN secret

Use the same token for both started and finished. The token must match WEBHOOK_TOKEN exactly.

Important

Do not put real Worker URLs, customer tokens, Cloudflare IDs, or deployment-specific values in shared examples, tickets, or public docs. Use placeholders such as https://setupmanagerhud.example.workers.dev/webhook and your-webhook-token-here.


Webhook Configuration

Add a top-level webhooks dictionary to your Setup Manager configuration. Configure both events so the dashboard can show the beginning and end of each enrollment.

<key>webhooks</key>
<dict>
    <key>started</key>
    <dict>
        <key>url</key>
        <string>https://setupmanagerhud.example.workers.dev/webhook</string>
        <key>token</key>
        <string>your-webhook-token-here</string>
    </dict>
    <key>finished</key>
    <dict>
        <key>url</key>
        <string>https://setupmanagerhud.example.workers.dev/webhook</string>
        <key>token</key>
        <string>your-webhook-token-here</string>
    </dict>
</dict>

Setup Manager sends the token value as the raw Authorization request header. Setup Manager HUD also accepts Authorization: Bearer <token> for manual curl tests, but the plist should use the token key shown above.

After saving the profile, use Security#verifying-token-setup to send test started and finished webhooks.


Debug Configuration Example

Setup Manager normally does not send webhooks when global DEBUG is enabled. To test Setup Manager HUD while debugging, set DEBUG to true inside the webhooks dictionary as well.

Use this as a clean test profile shape. Replace the Worker URL and token before deploying it.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>icon</key>
    <string>https://example.com/setup-manager-icon.png</string>

    <key>message</key>
    <string>Please wait while we install essential software.</string>

    <key>title</key>
    <string>Welcome</string>

    <key>jssID</key>
    <string>$JSSID</string>

    <key>computerNameTemplate</key>
    <string>%model-short%-%serial:-6%</string>

    <key>finalCountdown</key>
    <integer>-1</integer>

    <key>finalAction</key>
    <string>quit</string>

    <key>showBothButtons</key>
    <false/>

    <key>enrollmentActions</key>
    <array>
        <dict>
            <key>label</key>
            <string>Set Time Zone</string>
            <key>shell</key>
            <string>/usr/sbin/systemsetup</string>
            <key>arguments</key>
            <array>
                <string>-setTimeZone</string>
                <string>Europe/Amsterdam</string>
            </array>
        </dict>
        <dict>
            <key>label</key>
            <string>Google Chrome</string>
            <key>installomator</key>
            <string>googlechromepkg</string>
            <key>requiresRoot</key>
            <true/>
        </dict>
        <dict>
            <key>label</key>
            <string>Microsoft Company Portal</string>
            <key>installomator</key>
            <string>microsoftcompanyportal</string>
            <key>requiresRoot</key>
            <true/>
        </dict>
    </array>

    <key>DEBUG</key>
    <true/>

    <key>webhooks</key>
    <dict>
        <key>DEBUG</key>
        <true/>

        <key>started</key>
        <dict>
            <key>url</key>
            <string>https://setupmanagerhud.example.workers.dev/webhook</string>
            <key>token</key>
            <string>your-webhook-token-here</string>
        </dict>

        <key>finished</key>
        <dict>
            <key>url</key>
            <string>https://setupmanagerhud.example.workers.dev/webhook</string>
            <key>token</key>
            <string>your-webhook-token-here</string>
        </dict>
    </dict>
</dict>
</plist>

Important

For production profiles, remove global DEBUG or set it to false. Only keep webhooks DEBUG enabled when you intentionally want webhook events during Setup Manager debug runs.


Common Checks

  • started and finished should both point to the same Setup Manager HUD /webhook URL.
  • The token value must be the same value saved as WEBHOOK_TOKEN.
  • If webhooks return 401, check the token value first.
  • If webhooks return 400, check the payload shape with the examples in Security#verifying-token-setup.
  • If global DEBUG is enabled and no events appear, make sure DEBUG is also enabled inside the webhooks dictionary.

Clone this wiki locally