# Webhooks Receives Jamf Pro webhook events (computer / mobile device / smart group / policy / REST API activity) at a hosted HTTPS endpoint. Configure the URL in Jamf Pro under Settings → Global → Webhooks. **Sync Type: Push (Webhook)** ## Overview This input listens for events that Jamf Pro pushes to Monad rather than polling the Jamf Pro API on a schedule. When a Jamf Pro event fires (for example, a computer check-in, a smart group membership change, or a policy completion), Jamf Pro sends an HTTPS POST to the Monad-issued ingest URL. Monad receives, validates, and forwards the event payload to your pipeline immediately. Because data flows from Jamf Pro to Monad the moment an event occurs, no cron schedule or API credentials are required for this input. The only configuration step on the Monad side is creating the input and noting its ingest URL; all further setup happens in the Jamf Pro admin console. ## Prerequisites Before configuring this input, you need: 1. An active Jamf Pro instance (cloud-hosted at `*.jamfcloud.com` or self-hosted). 2. Administrator access to the Jamf Pro console so you can create webhook configurations under **Settings** > **Global** > **Webhooks**. 3. Network connectivity from your Jamf Pro instance to Monad's ingest URL (outbound HTTPS on port 443). For self-hosted Jamf Pro instances, confirm that outbound traffic to `app.monad.com` is permitted through your firewall. ## Configuration This input has no configurable settings or secrets. All configuration is done in Jamf Pro by pointing a webhook at Monad's ingest URL. ### Supported Event Types Jamf Pro supports the following webhook event types. You may configure one Monad input per event type, or configure a single Monad pipeline to receive multiple event types by adding multiple webhooks in Jamf Pro that all point to the same ingest URL. Commonly used event types include: - `ComputerAdded` - `ComputerCheckIn` - `ComputerInventoryCompleted` - `ComputerManagementStateChanged` - `ComputerPolicyFinished` - `ComputerPushCapabilityChanged` - `DeviceEnrollmentProgramInstanceSynced` - `MobileDeviceCheckIn` - `MobileDeviceCommandCompleted` - `MobileDeviceEnrolled` - `MobileDeviceUnenrolled` - `PatchSoftwareTitleUpdated` - `PushSent` - `RestAPIOperation` - `SmartGroupComputerMembershipChange` - `SmartGroupMobileDeviceMembershipChange` See the [Jamf Pro Webhooks documentation](https://learn.jamf.com/en-US/bundle/jamf-pro-documentation-current/page/Webhooks.html) for the full list of supported event types and their payload schemas. ## Setup Walk-through ### Step 1: Create the input in Monad 1. Open your Monad workspace and navigate to **Inputs**. 2. Click **Add Input** and select **Jamf — Webhooks**. 3. Save the input and add it to a pipeline. 4. Copy the pipeline's **Ingest URL** from the pipeline details page. It has the form `https://app.monad.com/api/v2/http/send/{pipeline_id}`. ### Step 2: Configure the webhook in Jamf Pro 1. Log in to your Jamf Pro instance. 2. Navigate to **Settings** > **Global** > **Webhooks**. 3. Click **New**. 4. Fill in the fields: - **Display Name**: a descriptive name such as `Monad - Computer Check-In`. - **Enabled**: check to enable immediately, or leave unchecked to enable later. - **Webhook URL**: paste the Monad Ingest URL copied in Step 1. - **Authentication Type**: **None** (Monad's ingest URL is the access control boundary; no additional authentication header is required). - **Content Type**: **JSON**. - **Webhook Event**: select the event type you want to send to this pipeline (e.g., `ComputerCheckIn`). 5. Click **Save**. Jamf Pro will begin delivering events to Monad the next time the selected event fires. ### Step 3: Verify delivery 1. Trigger a test event in Jamf Pro (for example, perform a manual computer inventory update to fire `ComputerInventoryCompleted`). 2. In Monad, open the pipeline and check the **Events** or **Logs** view to confirm the payload was received and processed. ## Troubleshooting ### Common Issues 1. **No events received in Monad** - Confirm the webhook is **Enabled** in Jamf Pro (**Settings** > **Global** > **Webhooks**). - Verify the **Webhook URL** in Jamf Pro exactly matches the Monad ingest URL — any typo or missing character will cause delivery to fail silently. - For self-hosted Jamf Pro instances, confirm outbound HTTPS (port 443) traffic to `app.monad.com` is allowed through your firewall and proxy. - In Jamf Pro, navigate to the webhook configuration and check the **Last Delivery** status field for any reported errors. 2. **Events delivered but pipeline shows no data** - Confirm the pipeline containing this input is active and not paused. - Check that the Monad ingest URL belongs to the correct pipeline — if you have multiple pipelines, each has a distinct URL. 3. **Partial event delivery (some events missing)** - Jamf Pro webhook delivery is at-most-once. If your Jamf Pro instance is temporarily unable to reach Monad (for example, during a maintenance window), events that fire during that window will not be replayed. There is no built-in retry mechanism in Jamf Pro for failed webhook deliveries. - To capture a historical or backfilled snapshot, use a polling Jamf Pro input (such as **Jamf — Mobile Devices**) alongside this webhook input. 4. **Unexpected payload format** - Different event types produce different JSON schemas. Confirm the event type selected in Jamf Pro matches what your downstream pipeline or transform expects. See the [Jamf Pro Webhooks payload reference](https://learn.jamf.com/en-US/bundle/jamf-pro-documentation-current/page/Webhooks.html) for schema details per event type. ## Related Articles - [Jamf Pro Webhooks Documentation](https://learn.jamf.com/en-US/bundle/jamf-pro-documentation-current/page/Webhooks.html) - [Jamf Pro Documentation](https://learn.jamf.com/en-US/bundle/jamf-pro-documentation-current/page/Jamf_Pro_Documentation.html) - [Jamf Pro API Reference](https://developer.jamf.com/jamf-pro/reference/jamf-pro-api)