Integrations
Connect OMG IQ to where your team already works
Findings don't live in a vacuum. OMG IQ connects to GitHub, Jira, GitLab, Azure DevOps, and Slack โ
each over OAuth with a verified inbound webhook, no long-lived
tokens. A finding stays in sync with the issue, work item, or merge request it maps to, and the
right channel hears about it. You connect in your workspace under
Settings โ Integrations.
๐ Connect (OAuth)
โ
๐ Two-way sync
โ
โ
Retest on merge ยท notify out
โ GitHub
Connect through a one-click GitHub App โ no personal access tokens, no manual
webhooks. Once installed on the repos you choose:
- Link a pull request to a finding (or let an agent do it); the finding shows the PR's live state.
- When the fixing PR merges, the linked finding moves to Ready for retest.
- Open a GitHub issue straight from a finding, using the installation's own short-lived token.
Full GitHub setup guide โ
๐ฆ Jira
Two-way sync between findings and Jira issues:
- Outbound: push a finding to Jira as an issue โ created once, then updated
idempotently (one issue per finding), with its workflow status transitioned to match the finding
via a configurable status map.
- Inbound: a secret-verified Jira webhook maps a Jira status change back onto
the linked finding.
- An out-of-band edit on the Jira side is surfaced as a conflict for review
rather than silently overwritten.
๐ฆ GitLab
Mirror the GitHub flow on GitLab:
- Link a merge request or pipeline to a finding.
- A merged MR moves its linked findings to Ready for retest; pipeline
events update the linked pipeline's recorded state.
- The inbound webhook is token-verified and binds the tenant itself โ idempotent.
๐ท Azure DevOps
Two-way sync between findings and ADO work items:
- Outbound: create / update an ADO work item from a finding (one item per
finding, idempotent).
- Inbound: a secret-verified service hook (work-item-updated /
pipeline-completed) updates the linked finding.
- Divergent edits on the ADO side surface as a conflict rather than an
overwrite.
Ingest test results from Azure Pipelines โ no GitHub needed. After your tests write a
JUnit/TRX report, POST it to the import endpoint; OMG IQ opens a run, turns failures into findings, and
feeds flaky-test detection. The endpoint auto-detects JUnit, TRX, NUnit & Allure.
# azure-pipelines.yml โ after the test step
- script: |
curl -sS -X POST \
"https://api.omgiq.com/api/v1/projects/$(OMGQA_PROJECT_ID)/test-runs/import?format=junit&branch=$(Build.SourceBranchName)&commit=$(Build.SourceVersion)&ciUrl=$(Build.BuildUri)" \
-H "Authorization: Bearer $(OMGQA_API_KEY)" \
-H "Content-Type: application/xml" \
--data-binary @"$(System.DefaultWorkingDirectory)/test-results/junit.xml"
displayName: Send test results to OMG IQ
condition: always()
Create a project-scoped API key under Account โ API keys and store it as the secret
pipeline variable OMGQA_API_KEY.
๐ฌ Slack
Keep the team in the loop and let them act without leaving Slack:
- Notify: new and updated findings (type / severity / status / link) post to a
configured channel with inline Acknowledge, Assign-to-me, and
Resolve buttons.
- Act: a signature-verified button click runs as the mapped OMG IQ member
with their real permissions โ out-of-band users get nothing โ and every action is audited.
- Answer decision requests: when an agent hits a question only a human can
settle, it stops and asks. The question, its deep link and one button per option
post to your channel; pressing one records the answer in OMG IQ as the mapped member and the agent
resumes on its own. If the request allows free text, an Other button opens a Slack
modal and the submission becomes the answer.
This is usually the difference between a fleet that runs overnight and one that idles: agents block
on human judgement far more often than on code, and a blocked agent costs nothing to resume โ it
just has to be able to reach you.
Setting it up
- Create a Slack app in your workspace (From scratch), add the bot scopes
chat:write, commands and users:read, install it, and invite
the bot to the channel you want.
- Turn on Interactivity and point its request URL at
https://api.omgiq.com/api/v1/integrations/slack/webhook/<your-org-slug>. The same
URL carries findings and decisions โ there is no second webhook to register.
- In OMG IQ, open Settings → Integrations and connect Slack with the bot
token (
xoxb-…), the app signing secret, and the channel id.
- Map your Slack user id to your OMG IQ member id. That mapping is what lets an answer carry real
authority instead of arriving from an anonymous bot โ an unmapped click is refused.
Notifications are opt-in: nothing is posted until you enable them on the
connection, and every inbound request is verified against Slack’s v0 signature before it is
trusted.
How they connect. Each connector uses OAuth and a verified inbound webhook; secrets
are encrypted at rest and OMG IQ never holds a long-lived password. Driving findings from an AI agent
instead? See the
MCP guide. Prefer plain HTTP? Everything is in the
API reference.