Skip to content
MoftgateMoftgate Docs
Product guide

Integrations Page Guide

Guide to the Moftgate Integrations page: native connectors, webhooks, API keys and SSO, plus the setup wizard, asset sync and event subscriptions.

What the Integrations Page Is#

The Integrations page is the single admin-only surface where every outbound connection to your IT, security, and collaboration tools is configured, tested, and monitored. It is not a list of credentials in a database - it is the operational control plane for how Moftgate talks to the rest of your stack.

It lives under General > Settings > Integrations and is reachable from the General navigation, the main Settings page card, and the global Spotlight search. Non-admin users cannot reach it.

It groups four distinct capabilities that share a common theme: how Moftgate communicates with systems outside itself.

TabPurposeDirection
IntegrationsNative connectors to PSA, ITSM, collaboration, observability, and SIEM toolsOutbound (panel initiates)
WebhooksSigned HTTP POST notifications to any external endpoint for selected eventsOutbound (panel initiates)
API KeysProgrammatic access to the Moftgate REST API for scripts and automationInbound (external client authenticates)
Single sign-onOIDC identity provider login for panel usersBidirectional (OAuth2 flow)

The active tab is set via a query parameter, so it is bookmarkable, shareable, and survives a page reload.

Why these four live together
An admin setting up a new SIEM pipeline typically does three things in one sitting: create an API key for the SIEM to pull data, configure a webhook to push alerts, and register an SSO provider so the SOC team logs in with their corporate identity. Grouping them on one page removes the friction of hunting across settings for related controls.
Integrations tab: native integrations, webhooks, API keys, and SSO providers in one admin-only page.
Integrations settings screen
Close image

Native Integrations#

The Integrations tab is where most operators spend their time. It renders every supported integration type as a card - not a table - because integrations are configured objects, not rows of telemetry. Each card shows the provider logo, capability badges, a plain-language description, and the benefit of using it, so an operator can pick without reading external documentation.

Moftgate ships with ten native integration types, each with its own credentials, delivery behaviour, and capability set. Each type is a first-class connector, not a generic webhook with a different label.

TypeCapabilitiesDeliveryWhat it does
ConnectWise PSAAssets, ticketsAPI (Basic auth)Creates service tickets; syncs endpoints as configurations
HaloPSAAssets, ticketsAPI (OAuth2)Fetches a token, then opens tickets; syncs assets
HuduAssetsAPI (API key)Asset sync only - no ticketing
ZestMSPAssets, ticketsAPI (Bearer)Opens tickets; syncs devices
SlackNotificationsWebhookPosts a message with attachments
Microsoft TeamsNotificationsWebhookPosts a MessageCard
JiraTicketsAPI (Basic auth)Opens a Jira issue of type Task
FreshserviceTicketsAPI (API key)Opens a Freshservice ticket
DatadogObservabilityAPI (API key)Publishes an event with severity mapping
SplunkSIEMAPI (HEC token)Forwards to the HTTP Event Collector
Why outbound-only matters
Moftgate is an appliance, not a SaaS. There is no public inbound URL. Every integration is outbound - the panel initiates all requests. No inbound firewall rule is required, and there is no callback surface to attack. This keeps the network attack surface minimal.

Every outbound call - whether an event delivery or an asset sync - is recorded with the event name, URL, HTTP status, outcome, duration, and a message. This is the integration layer’s audit trail. The per-integration Events modal paginates this log so operators can troubleshoot failed deliveries, and the card shows the most recent outcome without opening the modal.

StatusMeaning
successThe provider accepted the delivery
failedThe provider rejected it (bad credentials, rate limit, validation error)
errorA network or client-side error prevented the call
skippedThe config is incomplete or the type does not accept event deliveries

The Integration Wizard#

Configuring an integration is not a single long form. It is a multi-step wizard that validates each step before advancing, shows progress at the top, and lets you jump back to completed steps.

  1. 1
    Details

    Provider logo, description, benefit, and a display name for the integration.

  2. 2
    Configuration

    Type-specific fields such as URL, API key, token, project key, or site.

  3. 3
    Events

    Which Moftgate events the integration should receive.

  4. 4
    Asset sync

    For asset-capable types: enable sync and map endpoint groups to provider companies and sites.

  5. 5
    Review

    Summary, test connection, active toggle, and save.

Asset sync step
The Asset sync step appears only for types that expose the assets capability: ConnectWise, HaloPSA, Hudu, and Zest. It is where you enable asset sync and map Moftgate endpoint groups to provider companies and sites. A scheduler runs a sync every 15 minutes; operators can also trigger a manual sync from the card or the modal.

Webhooks#

Webhooks are the generic, provider-agnostic counterpart to native integrations. Where a native integration knows how to talk to Jira or Splunk, a webhook just POSTs a signed JSON payload to any URL you configure. Use webhooks when you want to deliver events to a system Moftgate does not have a native connector for.

When a webhook has a secret configured, every delivery is signed with HMAC-SHA256 over the JSON body, sent in the X-Moftgate-Signature header. The receiver verifies the signature to confirm the payload came from Moftgate and was not tampered with in transit.

Deliveries are queued and retried up to three times with backoff, so a slow or temporarily unavailable receiver never blocks request handling. You can also send a manual test payload from the webhook card to verify your endpoint.

EventWhen it fires
audit.createdEvery audited panel action
alert.createdA new alert is raised
endpoint.createdA new endpoint registers for the first time
incident.createdAn incident is reported by an agent
automation.run_completedAn automation run finishes (success or failure)

API Keys#

API keys allow programmatic access to the Moftgate REST API. They are the credential you hand to a script, a CI pipeline, or a third-party tool that needs to read or write Moftgate data.

  • Keys are stored as hashes - the plaintext token is never persisted.
  • The token format is a prefix followed by 64 hex characters (32 random bytes), shown only once at creation time.
  • Authentication uses a Bearer token header. The panel looks up the key by its prefix, then verifies the hash.
  • Two abilities: read (read-only) and write (read and write).
  • Revocation: delete the key or deactivate it. Both stop the token immediately.
Save your token now
The plaintext token is shown only once, immediately after creation. If you lose it, you must revoke the key and create a new one - there is no way to recover it.

Single Sign-On#

Single sign-on provides OIDC-compatible identity provider login for panel users. This is fully functional login, not just configuration storage. Four provider types are supported: Microsoft Entra ID, Google Workspace, Okta, and Custom OIDC.

The SSO modal is a two-column layout: the form on the left, a persistent setup guide on the right with copyable callback and discovery URLs and step-by-step instructions. The guide stays visible while you fill the form so focus is never lost, and on narrow screens it stacks below the form. Every URL in the guide is a copy-on-click chip, so you never have to select text manually.

A client ID and client secret are required for every OIDC provider - they identify this panel as an OAuth2 client at the identity provider. The client secret is stored encrypted and is never exposed to the browser. When editing a provider without supplying a new secret, the existing value is preserved.

ProviderDiscovery URLNotes
Microsoft Entra IDRequiredTenant-specific discovery URL
Google WorkspaceOptionalDefaults to the Google well-known endpoint
OktaRequiredOrg-specific discovery URL
Custom OIDCRequiredAny OIDC discovery document

The login page lists every active SSO provider as a sign-in button. When a user signs in, the panel validates the identity token, matches the user by email, and either logs them in or auto-provisions a new account. Local 2FA is bypassed because MFA is handled by the identity provider. A test connection button in the modal validates the configuration before saving by loading the discovery document and signing keys.

SIEM Forwarding#

SIEM log forwarding is managed separately from the Integrations page, from the main Settings page via the SIEM Log Forwarding card. It supports UDP, TCP, and HTTPS transports and CEF, LEEF, RFC 5424, and JSON formats, so you can stream logs to any SIEM that prefers a syslog-style input over an HTTP API.

This complements the native Splunk integration on the Integrations tab: use the Splunk integration for HTTP Event Collector forwarding, and use SIEM forwarding for streaming syslog to Splunk, QRadar, or any other collector.

Security Principles#

  • Outbound-only: every integration, webhook, and asset sync is outbound. The panel initiates all requests - no inbound firewall rule, no public callback URL, no exposed listener.
  • Encrypted secrets: API keys, client secrets, HEC tokens, and private keys are stored encrypted or hashed at rest. The plaintext API token is shown once at creation and never exposed to the browser in edit forms.
  • Per-integration credentials: each integration has its own credentials. A compromised Slack webhook URL does not expose your Jira API token - least privilege applied at the integration boundary.
  • Audit logging: every admin action on the Integrations page is logged with named parameters, and the audit log is itself an event source for webhooks.
  • Transactional writes: critical operations - creating an integration with group mappings, creating an API key, storing an SSO provider - are wrapped in database transactions so a partial failure never leaves the system inconsistent.

Frequently Asked Questions#

What is the difference between an integration and a webhook?
An integration is a native connector that knows how to talk to a specific provider - for example, a Jira integration builds a Jira issue payload, authenticates with Basic auth, and creates an issue. A webhook is generic: it POSTs a signed JSON payload to any URL you configure, and the receiver is responsible for interpreting it. Use an integration when Moftgate has a native connector for your target. Use a webhook when it does not.
Do I need to open a firewall port for integrations to work?
No. Every integration is outbound. The panel initiates all requests to the provider. There is no inbound listener, no callback URL, no public endpoint to expose. This keeps the appliance’s network attack surface minimal.
Can I send the same event to multiple integrations?
Yes. When an event fires, every active integration subscribed to that event receives it. If you have a Slack integration and a Splunk integration both subscribed to alert.created, both receive the event. Each integration uses its own credentials and delivery behaviour.
What happens when a delivery fails?
The delivery is recorded with the HTTP status and response message, and the integration card shows the most recent status. Open the Events modal to see the full delivery history. Failed integrations do not retry automatically (unlike webhooks, which retry three times with backoff) - this is intentional, because a misconfigured integration that retries can generate noise and rate-limit issues at the provider.
How does asset sync keep my PSA documentation current?
When you enable asset sync on an asset-capable integration (ConnectWise, HaloPSA, Hudu, Zest) and map Moftgate endpoint groups to provider companies or sites, Moftgate pushes every endpoint to the provider’s asset endpoint. A scheduler runs this every 15 minutes, and you can trigger a manual sync from the card or the modal. The mapping status transitions from unsynced to syncing to synced or failed so you can see which groups are current.
Are API keys stored in plaintext?
No. API keys are stored as hashes. The plaintext token is shown only once at creation time. If you lose the token, revoke the key and create a new one.
Can I use SSO without a local password?
Yes. When a user authenticates via SSO, local 2FA is bypassed because MFA is handled by the identity provider. Unknown users can be auto-provisioned with a default role if auto-provision is enabled, so SSO can be the sole authentication path for the panel.
How do I know which events an integration will receive?
Open the integration modal and go to the Events step. The selected events are what will be delivered. Each type ships with sensible defaults, but you can change them. The dispatcher only delivers matching events - a Jira integration subscribed to alert.created will not create an issue when an endpoint registers, even though the endpoint.created event fires.