GitLab
Manage and react to changes in your GitLab repositories
Triggers
Section titled “Triggers”Actions
Section titled “Actions”Instructions
Section titled “Instructions”Setup steps:
- Optionally set a Group ID (ID or full path, e.g.
my-org/my-subgroup) to work with a group’s projects. Leave it empty to use your personal projects. - Pick an Auth Type and connect:
- App OAuth: leave Application ID and Secret empty and click Save to start the setup wizard.
- Personal Access Token: create a token with scopes api, read_user, read_api, write_repository, read_repository (the link prefills them), paste it into Access Token, and click Save.
Note: Triggers create project webhooks, so the connected user needs at least the Maintainer role on the projects you want to monitor. Components act as that user as well: creating, updating, or merging merge requests, approving, deploying, publishing commit statuses, and editing issue comments follow the project’s roles and protected branch/environment rules.
On Branch Created
Section titled “On Branch Created”Trigger key: gitlab.onBranchCreated
The On Branch Created trigger starts a workflow execution when a new branch is created in a GitLab project.
Use Cases
Section titled “Use Cases”- Preview environments: Provision a temporary environment when a feature branch is created
- Branch conventions: Validate branch naming and alert on anomalies
- Release tracking: Open tracking issues or apply protective rules when release branches are created
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Branches (required): Configure branch filters using predicates. You can match full refs (refs/heads/main) or branch names (main).
Event Data
Section titled “Event Data”GitLab signals branch creation with a push event whose “before” SHA is all zeros. Each event includes:
- ref: The branch reference that was created (e.g. refs/heads/feature/new-feature)
- before: All-zero SHA, indicating the branch did not exist before
- after: The SHA the new branch points to
- user_name/user_username: The user who created the branch
- project: Project information
Webhook Setup
Section titled “Webhook Setup”This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.
Example Data
Section titled “Example Data”{ "data": { "after": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7", "before": "0000000000000000000000000000000000000000", "checkout_sha": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7", "commits": [], "event_name": "push", "message": null, "object_kind": "push", "project": { "avatar_url": null, "ci_config_path": null, "default_branch": "main", "description": "", "git_http_url": "https://gitlab.example.com/jsmith/example.git", "git_ssh_url": "git@gitlab.example.com:jsmith/example.git", "id": 15, "name": "Example", "namespace": "Jsmith", "path_with_namespace": "jsmith/example", "visibility_level": 0, "web_url": "https://gitlab.example.com/jsmith/example" }, "project_id": 15, "push_options": {}, "ref": "refs/heads/feature/new-feature", "ref_protected": false, "repository": { "description": "", "git_http_url": "https://gitlab.example.com/jsmith/example.git", "git_ssh_url": "git@gitlab.example.com:jsmith/example.git", "homepage": "https://gitlab.example.com/jsmith/example", "name": "Example", "url": "git@gitlab.example.com:jsmith/example.git", "visibility_level": 0 }, "total_commits_count": 0, "user_avatar": "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80", "user_email": "john@example.com", "user_id": 4, "user_name": "John Smith", "user_username": "jsmith" }, "timestamp": "2026-02-12T20:40:00.000000000Z", "type": "gitlab.branchCreated"}On Issue
Section titled “On Issue”Trigger key: gitlab.onIssue
The On Issue trigger starts a workflow execution when issue events occur in a GitLab project.
Use Cases
Section titled “Use Cases”- Notify Slack when an issue is created or assigned for triage
- Create a Jira issue when a GitLab issue is created for traceability
- Update external dashboards or close linked tickets when an issue is closed
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Actions (required): Select which issue actions to listen for. Default: opened.
- Labels (optional): Only trigger for issues with specific labels
Outputs
Section titled “Outputs”- Default channel: Emits issue payload including issue IID, title, state, labels, assignees, author, and action type
Webhook Setup
Section titled “Webhook Setup”This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.
Example Data
Section titled “Example Data”{ "data": { "assignees": [ { "avatar_url": "https://www.gravatar.com/avatar/abc123", "id": 1, "name": "John Doe", "username": "johndoe" } ], "event_type": "issue", "labels": [ { "color": "#dc3545", "created_at": "2026-01-01T00:00:00Z", "description": "Bug reports", "group_id": null, "id": 206, "project_id": 15, "template": false, "title": "bug", "type": "ProjectLabel", "updated_at": "2026-01-01T00:00:00Z" } ], "object_attributes": { "action": "open", "created_at": "2026-02-05T14:00:00Z", "description": "This is an example issue description for testing the webhook", "id": 301, "iid": 1, "state": "opened", "title": "Example Issue", "updated_at": "2026-02-05T14:00:00Z", "url": "https://gitlab.com/group/my-project/-/issues/1" }, "object_kind": "issue", "project": { "avatar_url": null, "default_branch": "main", "description": "Example project", "git_http_url": "https://gitlab.com/group/my-project.git", "git_ssh_url": "git@gitlab.com:group/my-project.git", "id": 15, "name": "my-project", "namespace": "group", "path_with_namespace": "group/my-project", "visibility_level": 20, "web_url": "https://gitlab.com/group/my-project" }, "repository": { "description": "Example project", "homepage": "https://gitlab.com/group/my-project", "name": "my-project", "url": "git@gitlab.com:group/my-project.git" }, "user": { "avatar_url": "https://www.gravatar.com/avatar/abc123", "email": "johndoe@example.com", "id": 1, "name": "John Doe", "username": "johndoe" } }, "timestamp": "2026-02-05T14:00:00.000000000Z", "type": "gitlab.issue"}On Issue Comment
Section titled “On Issue Comment”Trigger key: gitlab.onIssueComment
The On Issue Comment trigger starts a workflow execution when a comment is added to an issue in a GitLab project.
Use Cases
Section titled “Use Cases”- Command processing: Process slash commands in issue comments (e.g.,
/sp-investigateto trigger an agent that investigates whether the issue is worth fixing and rates its urgency) - Bot interactions: Respond to issue comments with automated actions
- Notification systems: Notify teams when important issue comments are added
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Content Filter (optional): Regex pattern to filter comments by content (e.g.,
/sp-investigateto only trigger on comments containing “/sp-investigate”)
Event Data
Section titled “Event Data”Each comment event includes:
- object_attributes: Comment information including note body, author, and URL
- issue: Issue the comment was added to
- user: User who added the comment
- project: Project information
Common expression paths:
- Issue IID:
root().data.issue.iid - Issue title:
root().data.issue.title - Comment body:
root().data.object_attributes.note - Comment URL:
root().data.object_attributes.url
Webhook Setup
Section titled “Webhook Setup”This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.
Example Data
Section titled “Example Data”{ "data": { "event_type": "note", "issue": { "author_id": 1, "created_at": "2026-02-10 09:00:00 UTC", "description": "Steps to reproduce: submit the login form with a wrong password.", "id": 45, "iid": 8, "labels": [ "bug" ], "state": "opened", "title": "Login page throws 500 on invalid credentials", "updated_at": "2026-02-12 20:40:00 UTC", "url": "https://gitlab.example.com/group/example/-/issues/8" }, "object_attributes": { "action": "create", "attachment": null, "author_id": 1, "created_at": "2026-02-12 20:40:00 UTC", "discussion_id": "6c2bb44bdc7f5c8f21b9ff8422f3d60cc0e5e719", "id": 1355, "note": "/sp-investigate", "noteable_id": 45, "noteable_type": "Issue", "project_id": 1, "system": false, "updated_at": "2026-02-12 20:40:00 UTC", "url": "https://gitlab.example.com/group/example/-/issues/8#note_1355" }, "object_kind": "note", "project": { "avatar_url": null, "ci_config_path": null, "default_branch": "main", "description": "Project used to demonstrate issue comment webhook payloads.", "git_http_url": "https://gitlab.example.com/group/example.git", "git_ssh_url": "ssh://git@gitlab.example.com:group/example.git", "id": 1, "name": "Example Project", "namespace": "group", "path_with_namespace": "group/example", "visibility_level": 20, "web_url": "https://gitlab.example.com/group/example" }, "project_id": 1, "repository": { "description": "Project used to demonstrate issue comment webhook payloads.", "homepage": "https://gitlab.example.com/group/example", "name": "Example Project", "url": "ssh://git@gitlab.example.com/group/example.git" }, "user": { "avatar_url": "https://www.gravatar.com/avatar/1a29da0ccd099482194440fac762f5ccb4ec53227761d1859979367644a889a5?s=80\u0026d=identicon", "email": "agarcia@example.com", "id": 1, "name": "Alex Garcia", "username": "agarcia" } }, "timestamp": "2026-02-12T20:40:00.000000000Z", "type": "gitlab.issueComment"}On Job
Section titled “On Job”Trigger key: gitlab.onJob
The On Job trigger starts a workflow execution when the status of a CI/CD job changes in a GitLab project.
Jobs are the individual units of work inside a pipeline. Where the On Pipeline trigger fires once for the pipeline as a whole, this trigger fires for each job, so you can react to one specific job - a deploy, a scan, a migration - without waiting for the rest of the pipeline.
Use Cases
Section titled “Use Cases”- Per-job automation: Run a workflow the moment the
deployjob succeeds, without waiting for the whole pipeline - Targeted failure handling: Page or open an issue when a named job fails
- Stage gates: React when a job in a specific stage finishes
- Build observability: Record durations, runners, and failure reasons per job
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Statuses (required): Job statuses to listen for. Default: success, failed.
- Names (optional): Filter on the job name, e.g. equals
deployor matchestest-.* - Refs (optional): Filter on the branch or tag the job ran for
Event Data
Section titled “Event Data”Each event includes:
- build_name, build_stage, build_status: The job, its stage, and its new status
- build_started_at, build_finished_at, build_duration, build_queued_duration: Job timings
- build_failure_reason, build_allow_failure, retries_count: Failure and retry details
- pipeline_id, ref, sha, tag: The pipeline and ref the job belongs to
- runner: The runner that executed the job
- commit, project, repository, user, environment: Surrounding context
Note that GitLab excludes trigger jobs from this event, and commit statuses published by external systems are not jobs, so they do not produce job events.
Permissions
Section titled “Permissions”The connected token needs the api scope, and the connected user needs at least the Maintainer role on the project so SuperPlane can create the webhook.
Webhook Setup
Section titled “Webhook Setup”This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.
Example Data
Section titled “Example Data”{ "data": { "before_sha": "9d1a3c4e7b2f8a6d5c0e1b3a7f9d2c4e6b8a0f13", "build_allow_failure": false, "build_created_at": "2026-02-13T17:56:00.412Z", "build_duration": 120.166, "build_failure_reason": "unknown_failure", "build_finished_at": "2026-02-13T17:59:30.284Z", "build_id": 998876, "build_name": "unit-tests", "build_queued_duration": 3.204, "build_stage": "test", "build_started_at": "2026-02-13T17:57:30.118Z", "build_status": "success", "commit": { "author_email": "jrivera@example.com", "author_name": "Jamie Rivera", "author_url": "https://gitlab.com/jrivera", "duration": 240, "finished_at": "2026-02-13T18:00:00.000Z", "id": 12345, "message": "Cache dependencies between CI jobs\n", "name": "Pipeline for branch: main", "sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55", "started_at": "2026-02-13T17:56:04.000Z", "status": "success" }, "environment": null, "object_kind": "build", "pipeline_id": 12345, "project": { "avatar_url": null, "ci_config_path": ".gitlab-ci.yml", "default_branch": "main", "description": "Example project used by SuperPlane workflows.", "git_http_url": "https://gitlab.com/group/example-project.git", "git_ssh_url": "git@gitlab.com:group/example-project.git", "id": 987, "name": "example-project", "namespace": "group", "path_with_namespace": "group/example-project", "visibility_level": 20, "web_url": "https://gitlab.com/group/example-project" }, "project_id": 987, "project_name": "group/example-project", "ref": "main", "repository": { "description": "Example project used by SuperPlane workflows.", "git_http_url": "https://gitlab.com/group/example-project.git", "git_ssh_url": "git@gitlab.com:group/example-project.git", "homepage": "https://gitlab.com/group/example-project", "name": "example-project", "url": "git@gitlab.com:group/example-project.git", "visibility_level": 20 }, "retries_count": 0, "runner": { "active": true, "description": "shared-runners-manager-6.gitlab.com", "id": 380987, "is_shared": true, "runner_type": "instance_type", "tags": [ "linux", "docker", "shared-runner" ] }, "sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55", "tag": false, "user": { "avatar_url": "https://gitlab.com/uploads/-/system/user/avatar/22/avatar.png", "email": "jrivera@example.com", "id": 22, "name": "Jamie Rivera", "username": "jrivera" } }, "timestamp": "2026-02-13T17:59:30.284000000Z", "type": "gitlab.job"}On MR Diff Note
Section titled “On MR Diff Note”Trigger key: gitlab.onMRDiffNote
The On MR Diff Note trigger starts a workflow execution when an inline comment is added to a merge request’s diff in a GitLab project.
Diff notes (also known as inline comments) are comments left on a specific line of a merge request’s changes, as opposed to a regular top-level merge request comment. Use gitlab.onMergeComment if you want to react to regular merge request discussion comments instead.
Use Cases
Section titled “Use Cases”- Review triage: Have an agent triage a merge request review by reading the diff note together with the file and line it was left on
- Command processing: Process slash commands left as inline review comments (e.g., /fix, /explain)
- Notification systems: Notify teams when important inline review comments are added
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Content Filter (optional): Regex pattern to filter comments by content (e.g.,
/fixto only trigger on comments containing “/fix”)
Event Data
Section titled “Event Data”Each diff note event includes:
- object_attributes: Comment information including note body, author, URL, and the diff position (file paths, line numbers, and commit SHAs the comment is anchored to)
- merge_request: Merge request the comment was added to
- user: User who added the comment
- project: Project information
Common expression paths:
- Merge request IID:
root().data.merge_request.iid - Merge request title:
root().data.merge_request.title - Comment body:
root().data.object_attributes.note - Diff file path:
root().data.object_attributes.position.new_path - Diff line number:
root().data.object_attributes.position.new_line
Webhook Setup
Section titled “Webhook Setup”This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.
Example Data
Section titled “Example Data”{ "data": { "event_type": "note", "merge_request": { "author_id": 1, "created_at": "2026-02-12 18:30:00 UTC", "description": "Adds support for additional GitLab webhook trigger types.", "draft": false, "id": 93, "iid": 12, "last_commit": { "author": { "email": "agarcia@example.com", "name": "Alex Garcia" }, "id": "372fa8f809fe161ee0f22e04d1a4074e0be6ac47", "message": "Add merge request trigger", "timestamp": "2026-02-12T18:25:00Z", "url": "https://gitlab.example.com/group/example/-/commit/372fa8f809fe161ee0f22e04d1a4074e0be6ac47" }, "merge_status": "can_be_merged", "source_branch": "feature/merge-request-trigger", "source_project_id": 1, "state": "opened", "target_branch": "main", "target_project_id": 1, "title": "Add merge request trigger", "updated_at": "2026-02-13 10:15:00 UTC", "url": "https://gitlab.example.com/group/example/-/merge_requests/12", "work_in_progress": false }, "object_attributes": { "action": "create", "attachment": null, "author_id": 1, "commit_id": "372fa8f809fe161ee0f22e04d1a4074e0be6ac47", "created_at": "2026-02-13 10:15:00 UTC", "discussion_id": "b4f2a7d4c3d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9", "id": 1401, "line_code": "a5cc2925ca8258af241be7e5b0381edf30266302_10_10", "note": "This variable name is misleading, can we rename it?", "noteable_id": 93, "noteable_type": "MergeRequest", "position": { "base_sha": "1234567890abcdef1234567890abcdef12345678", "head_sha": "372fa8f809fe161ee0f22e04d1a4074e0be6ac47", "new_line": 10, "new_path": "src/handlers/login.go", "old_line": 10, "old_path": "src/handlers/login.go", "position_type": "text", "start_sha": "234567890abcdef1234567890abcdef123456789" }, "project_id": 1, "system": false, "type": "DiffNote", "updated_at": "2026-02-13 10:15:00 UTC", "url": "https://gitlab.example.com/group/example/-/merge_requests/12#note_1401" }, "object_kind": "note", "project": { "avatar_url": null, "ci_config_path": null, "default_branch": "main", "description": "Project used to demonstrate merge request diff note webhook payloads.", "git_http_url": "https://gitlab.example.com/group/example.git", "git_ssh_url": "ssh://git@gitlab.example.com:group/example.git", "id": 1, "name": "Example Project", "namespace": "group", "path_with_namespace": "group/example", "visibility_level": 20, "web_url": "https://gitlab.example.com/group/example" }, "project_id": 1, "repository": { "description": "Project used to demonstrate merge request diff note webhook payloads.", "homepage": "https://gitlab.example.com/group/example", "name": "Example Project", "url": "ssh://git@gitlab.example.com/group/example.git" }, "user": { "avatar_url": "https://www.gravatar.com/avatar/1a29da0ccd099482194440fac762f5ccb4ec53227761d1859979367644a889a5?s=80\u0026d=identicon", "email": "agarcia@example.com", "id": 1, "name": "Alex Garcia", "username": "agarcia" } }, "timestamp": "2026-02-13T10:15:00.000000000Z", "type": "gitlab.mrDiffNote"}On Merge Comment
Section titled “On Merge Comment”Trigger key: gitlab.onMergeComment
The On Merge Comment trigger starts a workflow execution when a comment is added to a merge request in a GitLab project.
Use Cases
Section titled “Use Cases”- Command processing: Process slash commands in merge request comments (e.g., /deploy, /test)
- Bot interactions: Respond to merge request comments with automated actions
- Notification systems: Notify teams when important merge request comments are added
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Content Filter (optional): Regex pattern to filter comments by content (e.g.,
/deployto only trigger on comments containing “/deploy”)
Event Data
Section titled “Event Data”Each comment event includes:
- object_attributes: Comment information including note body, author, and URL
- merge_request: Merge request the comment was added to
- user: User who added the comment
- project: Project information
Common expression paths:
- Merge request IID:
root().data.merge_request.iid - Merge request title:
root().data.merge_request.title - Comment body:
root().data.object_attributes.note - Comment URL:
root().data.object_attributes.url
Webhook Setup
Section titled “Webhook Setup”This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.
Example Data
Section titled “Example Data”{ "data": { "event_type": "note", "merge_request": { "author_id": 1, "created_at": "2026-02-12 18:30:00 UTC", "description": "Adds support for additional GitLab webhook trigger types.", "draft": false, "id": 93, "iid": 12, "last_commit": { "author": { "email": "agarcia@example.com", "name": "Alex Garcia" }, "id": "372fa8f809fe161ee0f22e04d1a4074e0be6ac47", "message": "Add merge request trigger", "timestamp": "2026-02-12T18:25:00Z", "url": "https://gitlab.example.com/group/example/-/commit/372fa8f809fe161ee0f22e04d1a4074e0be6ac47" }, "merge_status": "can_be_merged", "source_branch": "feature/merge-request-trigger", "source_project_id": 1, "state": "opened", "target_branch": "main", "target_project_id": 1, "title": "Add merge request trigger", "updated_at": "2026-02-12 20:40:00 UTC", "url": "https://gitlab.example.com/group/example/-/merge_requests/12", "work_in_progress": false }, "object_attributes": { "action": "create", "attachment": null, "author_id": 1, "commit_id": "", "created_at": "2026-02-12 20:40:00 UTC", "discussion_id": "6c2bb44bdc7f5c8f21b9ff8422f3d60cc0e5e719", "id": 1244, "line_code": null, "note": "This looks good, but please update the docs before merging.", "noteable_id": 93, "noteable_type": "MergeRequest", "project_id": 1, "system": false, "updated_at": "2026-02-12 20:40:00 UTC", "url": "https://gitlab.example.com/group/example/-/merge_requests/12#note_1244" }, "object_kind": "note", "project": { "avatar_url": null, "ci_config_path": null, "default_branch": "main", "description": "Project used to demonstrate merge request comment webhook payloads.", "git_http_url": "https://gitlab.example.com/group/example.git", "git_ssh_url": "ssh://git@gitlab.example.com:group/example.git", "id": 1, "name": "Example Project", "namespace": "group", "path_with_namespace": "group/example", "visibility_level": 20, "web_url": "https://gitlab.example.com/group/example" }, "project_id": 1, "repository": { "description": "Project used to demonstrate merge request comment webhook payloads.", "homepage": "https://gitlab.example.com/group/example", "name": "Example Project", "url": "ssh://git@gitlab.example.com/group/example.git" }, "user": { "avatar_url": "https://www.gravatar.com/avatar/1a29da0ccd099482194440fac762f5ccb4ec53227761d1859979367644a889a5?s=80\u0026d=identicon", "email": "agarcia@example.com", "id": 1, "name": "Alex Garcia", "username": "agarcia" } }, "timestamp": "2026-02-12T20:40:00.000000000Z", "type": "gitlab.mergeComment"}On Merge Request
Section titled “On Merge Request”Trigger key: gitlab.onMergeRequest
The On Merge Request trigger starts a workflow execution when merge request events occur in a GitLab project.
Use Cases
Section titled “Use Cases”- MR automation: Automate actions when merge requests are opened, merged, or closed
- Code review workflows: Trigger review processes or notifications
- CI/CD integration: Run tests, builds, or preview environments on merge request events
- Status updates: Update systems when merge request status changes
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Actions (required): Select which merge request actions to listen for (open, close, reopen, update, approved, merge, etc.). Default: open.
Event Data
Section titled “Event Data”Each merge request event includes:
- object_attributes: Complete merge request information including title, description, state, action, source/target branches, and URL
- changes: When the merge request is updated, includes what changed (title, description, labels, etc.)
- assignees: Users assigned to the merge request
- reviewers: Users requested to review the merge request
- labels: Labels applied to the merge request
- project: Project information
- repository: Repository information
- user: User who triggered the event
Common expression paths:
- Merge request IID:
root().data.object_attributes.iid - Merge request title:
root().data.object_attributes.title - Action:
root().data.object_attributes.action - State:
root().data.object_attributes.state - Source branch:
root().data.object_attributes.source_branch - Target branch:
root().data.object_attributes.target_branch - Merge request URL:
root().data.object_attributes.url
Webhook Setup
Section titled “Webhook Setup”This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.
Example Data
Section titled “Example Data”{ "data": { "assignees": [ { "avatar_url": "https://www.gravatar.com/avatar/ab12cd34?s=80\u0026d=identicon", "email": "jrivera@example.com", "id": 4, "name": "Jamie Rivera", "username": "jrivera" } ], "changes": { "title": { "current": "Add merge request trigger", "previous": "Add trigger" } }, "event_type": "merge_request", "labels": [ { "id": 101, "title": "backend" } ], "object_attributes": { "action": "open", "description": "Adds support for additional GitLab webhook trigger types.", "draft": false, "id": 93, "iid": 12, "merge_status": "can_be_merged", "source_branch": "feature/merge-request-trigger", "state": "opened", "target_branch": "main", "title": "Add merge request trigger", "url": "https://gitlab.example.com/group/example/-/merge_requests/12", "work_in_progress": false }, "object_kind": "merge_request", "project": { "avatar_url": null, "ci_config_path": null, "default_branch": "main", "description": "Project used to demonstrate merge request webhook payloads.", "git_http_url": "https://gitlab.example.com/group/example.git", "git_ssh_url": "ssh://git@gitlab.example.com:group/example.git", "id": 1, "name": "Example Project", "namespace": "group", "path_with_namespace": "group/example", "visibility_level": 20, "web_url": "https://gitlab.example.com/group/example" }, "repository": { "description": "Project used to demonstrate merge request webhook payloads.", "git_http_url": "https://gitlab.example.com/group/example.git", "git_ssh_url": "ssh://git@gitlab.example.com:group/example.git", "homepage": "https://gitlab.example.com/group/example", "name": "Example Project", "url": "ssh://git@gitlab.example.com/group/example.git", "visibility_level": 20 }, "reviewers": [ { "avatar_url": "https://www.gravatar.com/avatar/ef56gh78?s=80\u0026d=identicon", "email": "mlee@example.com", "id": 6, "name": "Morgan Lee", "state": "unreviewed", "username": "mlee" } ], "user": { "avatar_url": "https://www.gravatar.com/avatar/1a29da0ccd099482194440fac762f5ccb4ec53227761d1859979367644a889a5?s=80\u0026d=identicon", "email": "agarcia@example.com", "id": 1, "name": "Alex Garcia", "username": "agarcia" } }, "timestamp": "2026-02-12T20:40:00.000000000Z", "type": "gitlab.mergeRequest"}On Milestone
Section titled “On Milestone”Trigger key: gitlab.onMilestone
The On Milestone trigger starts a workflow execution when milestone events occur in a GitLab project.
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Actions (required): Select which milestone actions to listen for. Default: create.
Outputs
Section titled “Outputs”- Default channel: Emits milestone payload data with action, project, and object attributes
Example Data
Section titled “Example Data”{ "data": { "action": "create", "event_type": "milestone", "object_attributes": { "created_at": "2025-06-16 14:10:57 UTC", "description": "First stable release", "due_date": "2025-06-30", "group_id": null, "id": 61, "iid": 10, "project_id": 1, "start_date": "2025-06-16", "state": "active", "title": "v1.0", "updated_at": "2025-06-16 14:10:57 UTC" }, "object_kind": "milestone", "project": { "avatar_url": null, "ci_config_path": null, "default_branch": "master", "description": "Aut reprehenderit ut est.", "git_http_url": "http://example.com/gitlabhq/gitlab-test.git", "git_ssh_url": "git@example.com:gitlabhq/gitlab-test.git", "homepage": "http://example.com/gitlabhq/gitlab-test", "http_url": "http://example.com/gitlabhq/gitlab-test.git", "id": 1, "name": "Gitlab Test", "namespace": "GitlabHQ", "path_with_namespace": "gitlabhq/gitlab-test", "ssh_url": "git@example.com:gitlabhq/gitlab-test.git", "url": "http://example.com/gitlabhq/gitlab-test.git", "visibility_level": 20, "web_url": "http://example.com/gitlabhq/gitlab-test" } }, "timestamp": "2026-02-12T20:40:00.000000000Z", "type": "gitlab.milestone"}On Pipeline
Section titled “On Pipeline”Trigger key: gitlab.onPipeline
The On Pipeline trigger starts a workflow execution when pipeline events occur in a GitLab project.
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Statuses (required): Select which pipeline statuses to listen for. Default: success, failed, canceled.
Outputs
Section titled “Outputs”- Default channel: Emits pipeline webhook payload data including status, ref, SHA, and project information
Webhook Setup
Section titled “Webhook Setup”This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.
Example Data
Section titled “Example Data”{ "data": { "merge_request": { "iid": 12, "title": "Improve CI pipeline" }, "object_attributes": { "created_at": "2026-02-10 12:00:00 UTC", "duration": 190, "finished_at": "2026-02-10 12:03:10 UTC", "id": 12345, "iid": 321, "ref": "main", "sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55", "source": "push", "status": "success", "updated_at": "2026-02-10 12:03:10 UTC", "url": "https://gitlab.com/group/example-project/-/pipelines/12345" }, "object_kind": "pipeline", "project": { "id": 987, "name": "example-project", "path_with_namespace": "group/example-project", "web_url": "https://gitlab.com/group/example-project" }, "user": { "id": 22, "name": "Jamie Rivera", "username": "jrivera" } }, "timestamp": "2026-02-13T18:00:00.000000000Z", "type": "gitlab.pipeline"}On Push
Section titled “On Push”Trigger key: gitlab.onPush
The On Push trigger starts a workflow execution when code is pushed to an existing branch in a GitLab project. New-branch creation is handled by the dedicated On Branch Created trigger, and branch deletions are ignored.
Use Cases
Section titled “Use Cases”- CI/CD automation: Trigger builds and deployments when code is pushed to
main - Policy gates: Run linting, security, or policy checks on every push
- Notifications: Post a summary to Slack when code lands on a branch
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Branches (required): Configure branch filters using predicates. You can match full refs (refs/heads/main) or branch names (main).
Event Data
Section titled “Event Data”Each push event includes:
- ref: The branch reference that was pushed to (e.g. refs/heads/main)
- before/after: Commit SHAs before and after the push
- commits: Array of commit information, each with added/modified/removed file lists
- user_name/user_username: The user who pushed
- project: Project information
Webhook Setup
Section titled “Webhook Setup”This trigger automatically sets up a GitLab webhook when configured. The webhook is managed by SuperPlane and will be cleaned up when the trigger is removed.
Example Data
Section titled “Example Data”{ "data": { "after": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7", "before": "95790bf891e76fee5e1747ab589903a6a1f80f22", "checkout_sha": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7", "commits": [ { "added": [ "CHANGELOG.md" ], "author": { "email": "john@example.com", "name": "John Smith" }, "id": "b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327", "message": "Update Catalog page", "modified": [ "app/controller/application.rb" ], "removed": [], "timestamp": "2026-02-12T20:39:00+00:00", "title": "Update Catalog page", "url": "https://gitlab.example.com/jsmith/example/-/commit/b6568db1bc1dcd7f8b4d5a946b0b91f9dacd7327" }, { "added": [], "author": { "email": "john@example.com", "name": "John Smith" }, "id": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7", "message": "Fix catalog rendering bug", "modified": [ "app/views/catalog/index.html.haml" ], "removed": [], "timestamp": "2026-02-12T20:40:00+00:00", "title": "Fix catalog rendering bug", "url": "https://gitlab.example.com/jsmith/example/-/commit/da1560886d4f094c3e6c9ef40349f7d38b5d27d7" } ], "event_name": "push", "message": null, "object_kind": "push", "project": { "avatar_url": null, "ci_config_path": null, "default_branch": "main", "description": "", "git_http_url": "https://gitlab.example.com/jsmith/example.git", "git_ssh_url": "git@gitlab.example.com:jsmith/example.git", "id": 15, "name": "Example", "namespace": "Jsmith", "path_with_namespace": "jsmith/example", "visibility_level": 0, "web_url": "https://gitlab.example.com/jsmith/example" }, "project_id": 15, "push_options": {}, "ref": "refs/heads/main", "ref_protected": true, "repository": { "description": "", "git_http_url": "https://gitlab.example.com/jsmith/example.git", "git_ssh_url": "git@gitlab.example.com:jsmith/example.git", "homepage": "https://gitlab.example.com/jsmith/example", "name": "Example", "url": "git@gitlab.example.com:jsmith/example.git", "visibility_level": 0 }, "total_commits_count": 2, "user_avatar": "https://s.gravatar.com/avatar/d4c74594d841139328695756648b6bd6?s=80", "user_email": "john@example.com", "user_id": 4, "user_name": "John Smith", "user_username": "jsmith" }, "timestamp": "2026-02-12T20:40:00.000000000Z", "type": "gitlab.push"}On Release
Section titled “On Release”Trigger key: gitlab.onRelease
The On Release trigger starts a workflow execution when release events occur in a GitLab project.
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Actions (required): Select which release actions to listen for. Default: create.
Outputs
Section titled “Outputs”- Default channel: Emits release payload data with action and release metadata
Example Data
Section titled “Example Data”{ "data": { "action": "create", "assets": { "count": 2, "links": [ { "id": 1, "link_type": "other", "name": "Changelog", "url": "https://example.net/changelog" } ], "sources": [ { "format": "zip", "url": "https://example.com/gitlab-org/release-webhook-example/-/archive/v1.1/release-webhook-example-v1.1.zip" }, { "format": "tar.gz", "url": "https://example.com/gitlab-org/release-webhook-example/-/archive/v1.1/release-webhook-example-v1.1.tar.gz" } ] }, "commit": { "author": { "email": "user@example.com", "name": "Example User" }, "id": "ee0a3fb31ac16e11b9dbb596ad16d4af654d08f8", "message": "Release v1.1", "timestamp": "2020-10-31T14:58:32+11:00", "title": "Release v1.1", "url": "https://example.com/gitlab-org/release-webhook-example/-/commit/ee0a3fb31ac16e11b9dbb596ad16d4af654d08f8" }, "created_at": "2020-11-02 12:55:12 UTC", "description": "v1.1 has been released", "id": 1, "name": "v1.1", "object_kind": "release", "project": { "avatar_url": null, "ci_config_path": null, "default_branch": "master", "description": "", "git_http_url": "https://example.com/gitlab-org/release-webhook-example.git", "git_ssh_url": "ssh://git@example.com/gitlab-org/release-webhook-example.git", "id": 1, "name": "release-webhook-example", "namespace": "Gitlab", "path_with_namespace": "gitlab-org/release-webhook-example", "visibility_level": 0, "web_url": "https://example.com/gitlab-org/release-webhook-example" }, "released_at": "2020-11-02 12:55:12 UTC", "tag": "v1.1", "url": "https://example.com/gitlab-org/release-webhook-example/-/releases/v1.1" }, "timestamp": "2026-02-12T20:40:00.000000000Z", "type": "gitlab.release"}On Tag
Section titled “On Tag”Trigger key: gitlab.onTag
The On Tag trigger starts a workflow execution when tag push events occur in a GitLab project.
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
- Tags (required): Configure tag filters using predicates. You can match full refs (refs/tags/v1.0.0) or tag names (v1.0.0).
Outputs
Section titled “Outputs”- Default channel: Emits tag push payload data including ref, before/after SHA, and project information
Example Data
Section titled “Example Data”{ "data": { "after": "82b3d5ae55f7080f1e6022629cdb57bfae7cccc7", "before": "0000000000000000000000000000000000000000", "checkout_sha": "82b3d5ae55f7080f1e6022629cdb57bfae7cccc7", "commits": [], "event_name": "tag_push", "message": "Tag message", "object_kind": "tag_push", "project": { "avatar_url": null, "ci_config_path": null, "default_branch": "master", "description": "", "git_http_url": "http://example.com/jsmith/example.git", "git_ssh_url": "git@example.com:jsmith/example.git", "id": 1, "name": "Example", "namespace": "Jsmith", "path_with_namespace": "jsmith/example", "visibility_level": 0, "web_url": "http://example.com/jsmith/example" }, "push_options": {}, "ref": "refs/tags/v1.0.0", "ref_protected": true, "repository": { "description": "", "git_http_url": "http://example.com/jsmith/example.git", "git_ssh_url": "git@example.com:jsmith/example.git", "homepage": "http://example.com/jsmith/example", "name": "Example", "url": "ssh://git@example.com/jsmith/example.git", "visibility_level": 0 }, "total_commits_count": 0, "user_email": "john@example.com", "user_id": 1, "user_name": "John Smith", "user_username": "jsmith" }, "timestamp": "2026-02-12T20:40:00.000000000Z", "type": "gitlab.tag"}On Vulnerability
Section titled “On Vulnerability”Trigger key: gitlab.onVulnerability
The On Vulnerability trigger starts a workflow execution when vulnerability events occur in a GitLab project.
Configuration
Section titled “Configuration”- Project (required): GitLab project to monitor
Outputs
Section titled “Outputs”- Default channel: Emits vulnerability payload data including severity, state, location, and linked issues
Example Data
Section titled “Example Data”{ "data": { "object_attributes": { "auto_resolved": false, "confidence": "unknown", "confidence_overridden": false, "confirmed_at": "2025-01-08T00:46:14.413Z", "confirmed_by_id": 1, "created_at": "2025-01-08T00:46:14.413Z", "cvss": [ { "vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "vendor": "NVD" } ], "dismissed_at": null, "dismissed_by_id": null, "identifiers": [ { "external_id": "29dce398-220a-4315-8c84-16cd8b6d9b05", "external_type": "gemnasium", "name": "Gemnasium-29dce398-220a-4315-8c84-16cd8b6d9b05", "url": "https://gitlab.com/gitlab-org/security-products/gemnasium-db/-/blob/master/gem/rexml/CVE-2024-41123.yml" }, { "external_id": "CVE-2024-41123", "external_type": "cve", "name": "CVE-2024-41123", "url": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-41123" } ], "issues": [ { "created_at": "2025-01-08T00:46:14.429Z", "title": "REXML ReDoS vulnerability", "updated_at": "2025-01-08T00:46:14.429Z", "url": "https://example.com/flightjs/Flight/-/issues/1" } ], "location": { "dependency": { "package": { "name": "rexml" }, "version": "3.3.1" }, "file": "Gemfile.lock" }, "project_id": 1, "report_type": "dependency_scanning", "resolved_at": null, "resolved_by_id": null, "resolved_on_default_branch": false, "severity": "high", "severity_overridden": false, "state": "confirmed", "title": "REXML DoS vulnerability", "updated_at": "2025-01-08T00:46:14.413Z", "url": "https://example.com/flightjs/Flight/-/security/vulnerabilities/1" }, "object_kind": "vulnerability" }, "timestamp": "2026-02-12T20:40:00.000000000Z", "type": "gitlab.vulnerability"}Accept Merge Request
Section titled “Accept Merge Request”Component key: gitlab.acceptMergeRequest
The Accept Merge Request component merges an open GitLab merge request.
Use Cases
Section titled “Use Cases”- Automated merge gates: Merge a merge request after agent checks, review pipelines, or policy checks pass
- Release automation: Merge approved promotion branches into a release branch
- Queue workflows: Merge merge requests from a controlled SuperPlane workflow
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the merge request
- Merge Request IID (required): The internal ID (IID) of the merge request to merge (supports expressions)
- Merge Commit Message: Optional custom merge commit message
- Squash: If enabled, squash all commits into a single commit on merge
- Squash Commit Message: Optional custom squash commit message
- Remove Source Branch: If enabled, removes the source branch after merging
- Expected SHA: Optional head SHA guard. GitLab rejects the merge if the source branch head has changed.
Permissions
Section titled “Permissions”The connected user must be allowed to merge into the target branch. Merging into protected branches (e.g. the default branch) requires the Maintainer role by default, unless the branch’s Allowed to merge setting includes Developers.
Output
Section titled “Output”Returns the merged merge request object, including state, merge commit SHA, source and target branches, and the merge request URL.
Example Output
Section titled “Example Output”{ "data": { "assignees": [ { "avatar_url": "https://www.gravatar.com/avatar/abc123", "id": 22, "name": "Jamie Rivera", "state": "active", "username": "jrivera", "web_url": "https://gitlab.example.com/jrivera" } ], "author": { "avatar_url": "https://www.gravatar.com/avatar/abc123", "id": 22, "name": "Jamie Rivera", "state": "active", "username": "jrivera", "web_url": "https://gitlab.example.com/jrivera" }, "closed_at": null, "closed_by": null, "created_at": "2026-02-13T08:46:00.000Z", "description": "Adds the new login page with SSO support", "detailed_merge_status": "not_open", "draft": false, "id": 1, "iid": 42, "labels": [ "feature" ], "merge_commit_sha": "9999999999999999999999999999999999999999", "merge_error": null, "merge_user": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "https://gitlab.example.com/root" }, "merged_at": "2026-02-13T11:16:17.520Z", "milestone": null, "project_id": 3, "reviewers": [], "sha": "8888888888888888888888888888888888888888", "should_remove_source_branch": true, "source_branch": "feature/login-page", "squash": false, "squash_commit_sha": null, "state": "merged", "target_branch": "main", "title": "feat: add login page", "updated_at": "2026-02-13T11:16:17.520Z", "web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42" }, "timestamp": "2026-02-13T11:16:17.520Z", "type": "gitlab.mergeRequest"}Add Issue Label
Section titled “Add Issue Label”Component key: gitlab.addIssueLabel
The Add Issue Label component adds one or more labels to an existing GitLab issue without affecting existing labels.
Use Cases
Section titled “Use Cases”- Triage automation: Automatically label issues based on content or source
- Status tracking: Add status labels as issues move through workflows
- Priority tagging: Apply priority labels based on external signals
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the issue
- Issue IID (required): The internal ID (IID) of the issue to add labels to (supports expressions)
- Labels (required): List of label names to add to the issue. If a label does not already exist, GitLab creates it.
Output
Section titled “Output”Returns the full list of labels currently on the issue after the addition.
Example Output
Section titled “Example Output”{ "data": [ "bug", "urgent", "needs-triage" ], "timestamp": "2026-02-13T11:16:17.520Z", "type": "gitlab.labels"}Add Merge Request Reviewers
Section titled “Add Merge Request Reviewers”Component key: gitlab.addMergeRequestReviewers
The Add Merge Request Reviewers component requests reviews from additional users on an existing GitLab merge request. Existing reviewers are kept.
Use Cases
Section titled “Use Cases”- Automated review assignment: Add reviewers after a merge request is opened as part of a workflow
- Escalation: Add a senior reviewer when checks fail or a change touches sensitive areas
- Round-robin: Assign reviewers from a rotation once a merge request is ready
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the merge request
- Merge Request IID (required): The internal ID (IID) of the merge request (supports expressions)
- Reviewers (required): Users to request a review from. These are added to any existing reviewers.
Permissions
Section titled “Permissions”The connected user needs at least the Developer role on the project to change reviewers.
Output
Section titled “Output”Returns the updated merge request object, including its full reviewer list and URL.
Example Output
Section titled “Example Output”{ "data": { "assignees": [], "author": { "avatar_url": "https://www.gravatar.com/avatar/abc123", "id": 22, "name": "Jamie Rivera", "state": "active", "username": "jrivera", "web_url": "https://gitlab.example.com/jrivera" }, "closed_at": null, "closed_by": null, "created_at": "2026-02-13T08:46:00.000Z", "description": "Adds the new login page with SSO support", "detailed_merge_status": "mergeable", "draft": false, "id": 1, "iid": 42, "labels": [ "feature" ], "merge_commit_sha": null, "merge_error": null, "merge_user": null, "merged_at": null, "milestone": null, "project_id": 3, "reviewers": [ { "avatar_url": "https://www.gravatar.com/avatar/def456", "id": 30, "name": "Alex Morgan", "state": "active", "username": "amorgan", "web_url": "https://gitlab.example.com/amorgan" }, { "avatar_url": "https://www.gravatar.com/avatar/ghi789", "id": 31, "name": "Sam Chen", "state": "active", "username": "schen", "web_url": "https://gitlab.example.com/schen" } ], "sha": "8888888888888888888888888888888888888888", "should_remove_source_branch": true, "source_branch": "feature/login-page", "squash": false, "squash_commit_sha": null, "state": "opened", "target_branch": "main", "title": "feat: add login page", "updated_at": "2026-02-13T09:30:00.000Z", "web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42" }, "timestamp": "2026-02-13T09:30:00.000Z", "type": "gitlab.mergeRequest"}Add Reaction
Section titled “Add Reaction”Component key: gitlab.addReaction
The Add Reaction component adds an award emoji reaction to a GitLab merge request or to a comment (note) on a merge request.
Use Cases
Section titled “Use Cases”- Acknowledge commands: Add eyes to merge request comments to indicate automation saw them
- Workflow feedback: React with thumbsup or rocket on success paths
- Fast triage signals: Use reactions to show status without posting extra comments
Configuration
Section titled “Configuration”- Project: Select the GitLab project
- Merge Request IID: The internal ID (IID) of the merge request (supports expressions)
- Target: Choose whether to react to the merge request itself or to a comment on it
- Note ID: The comment (note) ID to react to. Required when the target is a comment.
- Reaction: The award emoji name
Output
Section titled “Output”Returns the created GitLab award emoji object, including id, name, user, and timestamp.
Example Output
Section titled “Example Output”{ "data": { "awardable_id": 1, "created_at": "2023-01-01T10:00:00.000Z", "id": 25, "name": "eyes", "updated_at": "2023-01-01T10:00:00.000Z", "user": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" } }, "timestamp": "2023-01-01T10:00:00.000Z", "type": "gitlab.addReaction"}Approve Merge Request
Section titled “Approve Merge Request”Component key: gitlab.approveMergeRequest
The Approve Merge Request component approves a GitLab merge request as the connected user.
Use Cases
Section titled “Use Cases”- Automated approval gates: Approve a merge request after agent checks, review pipelines, or policy checks pass
- Bot reviews: Approve merge requests from a controlled SuperPlane workflow
- Compliance workflows: Record an approval once external validations succeed
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the merge request
- Merge Request IID (required): The internal ID (IID) of the merge request to approve (supports expressions)
- Expected SHA: Optional head SHA guard. GitLab rejects the approval if the source branch head has changed.
Permissions
Section titled “Permissions”The connected user must be an eligible approver on the project: a direct member with at least the Developer role. Merge request authors cannot approve their own merge requests unless the project allows it.
Output
Section titled “Output”Returns the merge request approval state, including the number of approvals required and left, and who approved.
Example Output
Section titled “Example Output”{ "data": { "approvals_left": 1, "approvals_required": 2, "approved_by": [ { "approved_at": "2026-02-13T10:15:30.000Z", "user": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "https://gitlab.example.com/root" } } ], "created_at": "2026-02-13T08:46:00.000Z", "description": "Adds the new login page with SSO support", "id": 1, "iid": 42, "merge_status": "can_be_merged", "project_id": 3, "state": "opened", "title": "feat: add login page", "updated_at": "2026-02-13T10:15:30.000Z" }, "timestamp": "2026-02-13T10:15:30.000Z", "type": "gitlab.mergeRequestApproval"}Create Deployment
Section titled “Create Deployment”Component key: gitlab.createDeployment
The Create Deployment component records a deployment for a GitLab project environment.
Use Cases
Section titled “Use Cases”- Deployment tracking: Record deployments performed outside of GitLab CI/CD so they show up in the environment’s deployment history
- Release automation: Mark a commit as deployed to an environment (staging, production) from a SuperPlane workflow
- Status coordination: Pair with Create Deployment Status to transition the deployment as your rollout progresses
Configuration
Section titled “Configuration”- Project (required): The GitLab project to deploy in
- Environment (required): The target environment (e.g., production, staging). Pick an existing one from the dropdown, or switch to Expression and type a new name - GitLab creates it automatically on first deploy.
- Ref (required): The branch or tag being deployed (defaults to main). When you pick Tag in this field, the deployment is automatically recorded as a tag deployment.
- Commit SHA (required): The commit SHA being deployed. Supports expressions.
- Ref is a tag: Only needed when Ref comes from an expression that doesn’t carry the tag prefix (e.g. a raw tag name). Not needed when using the Ref field’s own Tag option.
- Status: The initial deployment status (defaults to running)
Output
Section titled “Output”Returns the created deployment object, including:
- id: The deployment ID (use it with Create Deployment Status)
- iid: The project-relative deployment ID
- status: The deployment status
- environment: The environment the deployment targets
Requirements
Section titled “Requirements”The connected user needs at least the Developer role on the project, and for protected environments must be in the environment’s Allowed to deploy list.
Example Output
Section titled “Example Output”{ "data": { "created_at": "2026-02-13T18:00:00.000Z", "deployable": null, "environment": { "external_url": "https://prod.example.com", "id": 9, "name": "production" }, "id": 42, "iid": 2, "ref": "main", "sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a", "status": "running", "updated_at": "2026-02-13T18:00:00.000Z", "user": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" } }, "timestamp": "2026-02-13T18:00:00.000Z", "type": "gitlab.deployment"}Create Deployment Status
Section titled “Create Deployment Status”Component key: gitlab.createDeploymentStatus
The Create Deployment Status component updates the status of an existing GitLab deployment.
Use Cases
Section titled “Use Cases”- Rollout progress: Transition a deployment from running to success or failed as your workflow completes
- Deployment tracking: Keep an environment’s deployment history in sync with an external rollout
- Follow-up to Create Deployment: Reference the deployment created upstream and mark its final outcome
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the deployment
- Deployment ID (required): The ID of the deployment to update. Supports expressions, e.g.
{{ $['Create Deployment'].data.id }} - Status (required): The new deployment status (running, success, failed, canceled)
Output
Section titled “Output”Returns the updated deployment object, including:
- id: The deployment ID
- status: The new deployment status
- environment: The environment the deployment targets
Requirements
Section titled “Requirements”The connected user needs at least the Developer role on the project, and for protected environments must be in the environment’s Allowed to deploy list.
Example Output
Section titled “Example Output”{ "data": { "created_at": "2026-02-13T18:00:00.000Z", "deployable": null, "environment": { "external_url": "https://prod.example.com", "id": 9, "name": "production" }, "id": 42, "iid": 2, "ref": "main", "sha": "a91957a858320c0e17f3a0eca7cfacbff50ea29a", "status": "success", "updated_at": "2026-02-13T18:04:12.000Z", "user": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" } }, "timestamp": "2026-02-13T18:04:12.000Z", "type": "gitlab.deployment"}Create Issue
Section titled “Create Issue”Component key: gitlab.createIssue
The Create Issue component creates a new issue in a specified GitLab project.
Use Cases
Section titled “Use Cases”- Automated Bug Reporting: Create issues when a monitoring system detects an error
- Task Management: Automatically create tasks for new employee onboarding
- Feedback Loop: Turn customer feedback into actionable issues
Configuration
Section titled “Configuration”- Project (required): The GitLab project where the issue will be created
- Title (required): The title of the new issue
- Description (optional): The description/body of the issue
- Assignees (optional): Users to assign the issue to
- Labels (optional): Labels to apply to the issue (e.g., bug, enhancement)
- Milestone (optional): Milestone to associate with the issue
- Due Date (optional): Date when the issue is due
Output
Section titled “Output”The component outputs the created issue object, including:
- id: The internal ID of the issue
- iid: The project-relative ID of the issue
- web_url: The URL to view the issue in GitLab
- state: The current state of the issue (opened/closed)
Example Output
Section titled “Example Output”{ "data": { "_links": { "award_emoji": "http://gitlab.example.com/api/v4/projects/1/issues/1/award_emoji", "notes": "http://gitlab.example.com/api/v4/projects/1/issues/1/notes", "project": "http://gitlab.example.com/api/v4/projects/1", "self": "http://gitlab.example.com/api/v4/projects/1/issues/1" }, "assignee": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" }, "assignees": [ { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" } ], "author": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" }, "blocking_issues_count": 0, "closed_at": null, "closed_by": null, "confidential": false, "created_at": "2023-01-01T10:00:00.000Z", "description": "This is an example issue created via SuperPlane", "discussion_locked": null, "downvotes": 0, "due_date": null, "has_tasks": false, "id": 1, "iid": 1, "issue_type": "issue", "labels": [ "bug", "urgent" ], "merge_requests_count": 0, "milestone": null, "project_id": 3, "references": { "full": "gitlab-org/gitlab-test#1", "relative": "#1", "short": "#1" }, "state": "opened", "task_completion_status": { "completed_count": 0, "count": 0 }, "time_stats": { "human_time_estimate": null, "human_total_time_spent": null, "time_estimate": 0, "total_time_spent": 0 }, "title": "Example Issue", "type": "ISSUE", "updated_at": "2023-01-01T10:00:00.000Z", "upvotes": 0, "user_notes_count": 0, "web_url": "http://gitlab.example.com/gitlab-org/gitlab-test/issues/1", "weight": null }, "timestamp": "2023-01-01T10:00:00.000Z", "type": "gitlab.issue"}Create Issue Comment
Section titled “Create Issue Comment”Component key: gitlab.createIssueComment
The Create Issue Comment component adds a comment (note) to an existing GitLab issue.
Use Cases
Section titled “Use Cases”- Automated updates: Post deployment status or remediation updates to GitLab issues
- Runbook linking: Add runbook links, error details, or status for responders
- Cross-platform sync: Sync Slack or PagerDuty notes into GitLab as comments
- Automated comments: Add automated comments based on workflow events
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the issue
- Issue IID (required): The internal ID (IID) of the issue to comment on (supports expressions)
- Body (required): The comment text (supports Markdown and expressions)
Output
Section titled “Output”Returns the created note object, including:
- id: The ID of the note
- body: The comment text
- author: The user who created the comment
- created_at: When the comment was created
Example Output
Section titled “Example Output”{ "data": { "author": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" }, "body": "This is an example comment created via SuperPlane", "created_at": "2023-01-01T10:00:00.000Z", "id": 302, "noteable_id": 1, "noteable_iid": 1, "noteable_type": "Issue", "system": false, "updated_at": "2023-01-01T10:00:00.000Z" }, "timestamp": "2023-01-01T10:00:00.000Z", "type": "gitlab.createIssueComment"}Create Merge Request Comment
Section titled “Create Merge Request Comment”Component key: gitlab.createMergeComment
The Create Merge Request Comment component adds a comment (note) to an existing GitLab merge request.
Use Cases
Section titled “Use Cases”- Deployment updates: Post deployment status or remediation updates to a merge request
- Automated feedback: Add automated review notes based on pipeline or workflow results
- Cross-platform sync: Sync Slack or PagerDuty notes into GitLab as merge request comments
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the merge request
- Merge Request IID (required): The internal ID (IID) of the merge request to comment on (supports expressions)
- Body (required): The comment text. Supports Markdown formatting.
Output
Section titled “Output”Returns the created note object, including:
- Note ID
- Note body
- Author information
- Created timestamp
Example Output
Section titled “Example Output”{ "data": { "author": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" }, "body": "This is an example comment created via SuperPlane", "created_at": "2023-01-01T10:00:00.000Z", "id": 302, "noteable_id": 3, "noteable_iid": 1, "noteable_type": "MergeRequest", "system": false, "updated_at": "2023-01-01T10:00:00.000Z" }, "timestamp": "2023-01-01T10:00:00.000Z", "type": "gitlab.createMergeComment"}Create Merge Request
Section titled “Create Merge Request”Component key: gitlab.createMergeRequest
The Create Merge Request component opens a new merge request in a specified GitLab project.
Use Cases
Section titled “Use Cases”- Automated fixes: An agent commits a fix on a branch and opens a merge request for review
- Dependency updates: Open a merge request when a dependency or changelog bump is generated
- Release automation: Open a merge request to promote a branch into a release branch
Configuration
Section titled “Configuration”- Project (required): The GitLab project where the merge request will be created
- Source Branch (required): The branch containing the changes (supports expressions)
- Target Branch (required): The branch you want the changes merged into (e.g. main)
- Title (required): The title of the new merge request
- Description (optional): The description/body of the merge request
- Assignees (optional): Users to assign the merge request to
- Reviewers (optional): Users to request a review from
- Labels (optional): Labels to apply to the merge request
- Milestone (optional): Milestone to associate with the merge request
- Remove Source Branch (optional): Remove the source branch when the merge request is merged
- Squash (optional): Squash commits into a single commit when merging
Permissions
Section titled “Permissions”The connected user needs at least the Developer role on the project to create a merge request.
Output
Section titled “Output”The component outputs the created merge request object, including:
- iid: The project-relative ID of the merge request
- web_url: The URL to view the merge request in GitLab
- source_branch and target_branch: The branches involved
- state: The current state of the merge request (opened)
Example Output
Section titled “Example Output”{ "data": { "assignees": [ { "avatar_url": "https://www.gravatar.com/avatar/abc123", "id": 22, "name": "Jamie Rivera", "state": "active", "username": "jrivera", "web_url": "https://gitlab.example.com/jrivera" } ], "author": { "avatar_url": "https://www.gravatar.com/avatar/abc123", "id": 22, "name": "Jamie Rivera", "state": "active", "username": "jrivera", "web_url": "https://gitlab.example.com/jrivera" }, "closed_at": null, "closed_by": null, "created_at": "2026-02-13T08:46:00.000Z", "description": "Adds the new login page with SSO support", "detailed_merge_status": "mergeable", "draft": false, "id": 1, "iid": 42, "labels": [ "feature" ], "merge_commit_sha": null, "merge_error": null, "merge_user": null, "merged_at": null, "milestone": null, "project_id": 3, "reviewers": [ { "avatar_url": "https://www.gravatar.com/avatar/def456", "id": 30, "name": "Alex Morgan", "state": "active", "username": "amorgan", "web_url": "https://gitlab.example.com/amorgan" } ], "sha": "8888888888888888888888888888888888888888", "should_remove_source_branch": true, "source_branch": "feature/login-page", "squash": false, "squash_commit_sha": null, "state": "opened", "target_branch": "main", "title": "feat: add login page", "updated_at": "2026-02-13T08:46:00.000Z", "web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42" }, "timestamp": "2026-02-13T08:46:00.000Z", "type": "gitlab.mergeRequest"}Create Release
Section titled “Create Release”Component key: gitlab.createRelease
The Create Release component creates a new release in a GitLab project, optionally creating the underlying tag at the same time.
Use Cases
Section titled “Use Cases”- Automated releases: Cut a release automatically after a pipeline succeeds
- Tag and release together: Create the git tag and its release notes in one step
- Scheduled releases: Set a future release date to publish an upcoming release
Configuration
Section titled “Configuration”- Project (required): The GitLab project to release in
- Tag Name (required): The tag to create the release for (supports expressions)
- Ref (optional): Branch, tag, or commit SHA to create the tag from. Required if the tag doesn’t already exist
- Release Name (optional): The release title
- Description (optional): Release notes, in Markdown
- Milestones (optional): Project milestones to associate with the release
- Released At (optional): Set a date in the future to schedule an upcoming release, or in the past to backdate it. Defaults to now
Output
Section titled “Output”Returns the created release object.
Example Output
Section titled “Example Output”{ "data": { "_links": { "closed_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=closed", "closed_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=closed", "edit_url": "https://gitlab.com/root/example-project/-/releases/v1.0.0/edit", "merged_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=merged", "opened_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=opened", "opened_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=opened", "self": "https://gitlab.com/root/example-project/-/releases/v1.0.0" }, "assets": { "count": 2, "links": [], "sources": [ { "format": "zip", "url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.zip" }, { "format": "tar.gz", "url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.tar.gz" } ] }, "author": { "avatar_url": "https://www.gravatar.com/avatar/0?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "https://gitlab.com/root" }, "commit": { "author_email": "admin@example.com", "author_name": "Administrator", "authored_date": "2026-01-03T01:55:18.000Z", "committed_date": "2026-01-03T01:55:18.000Z", "committer_email": "admin@example.com", "committer_name": "Administrator", "created_at": "2026-01-03T01:55:18.000Z", "id": "588440f66559714280628a4f9799f0c4eb880a7", "message": "Merge branch 'feature' into 'main'\n", "parent_ids": [ "281d3a76f31c812dbf48abce82ccf6860adedd81" ], "short_id": "588440f6", "title": "Merge branch 'feature' into 'main'" }, "commit_path": "/root/example-project/-/commit/588440f66559714280628a4f9799f0c4eb880a7", "created_at": "2026-01-03T01:56:19.539Z", "description": "## What's Changed\n\n- Added new feature\n- Fixed a bug", "evidence_sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf", "evidences": [ { "collected_at": "2026-01-03T01:56:19.552Z", "filepath": "https://gitlab.com/root/example-project/-/releases/v1.0.0/evidences/1.json", "sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf" } ], "milestones": [ { "created_at": "2025-12-01T09:30:00.000Z", "description": "", "due_date": "2026-01-01", "id": 51, "iid": 1, "issue_stats": { "closed": 5, "total": 5 }, "project_id": 24, "start_date": "2025-12-01", "state": "closed", "title": "v1.0", "updated_at": "2026-01-02T10:00:00.000Z", "web_url": "https://gitlab.com/root/example-project/-/milestones/1" } ], "name": "Release 1.0.0", "released_at": "2026-01-03T01:56:19.539Z", "tag_name": "v1.0.0", "tag_path": "/root/example-project/-/tags/v1.0.0", "upcoming_release": false }, "timestamp": "2026-01-03T01:56:19.552000000Z", "type": "gitlab.release"}Delete Release
Section titled “Delete Release”Component key: gitlab.deleteRelease
The Delete Release component removes a release from a GitLab project.
Use Cases
Section titled “Use Cases”- Cleanup: Remove draft or test releases created in error
- Rollback: Delete a release that shouldn’t have been published
- Automated maintenance: Remove releases as part of a cleanup workflow
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the release
- Release Strategy (required): Identify the release by a specific tag, or use the project’s latest release
- Tag Name (required if strategy is “Specific tag”): The tag of the release to delete
- Also delete Git tag (optional): GitLab does not delete the underlying tag when a release is deleted, so enable this to remove it too
Output
Section titled “Output”Returns the deleted release object, plus a “tag_deleted” field that is true only if the Git tag was also requested and successfully removed.
Example Output
Section titled “Example Output”{ "data": { "_links": { "closed_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=closed", "closed_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=closed", "edit_url": "https://gitlab.com/root/example-project/-/releases/v1.0.0/edit", "merged_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=merged", "opened_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=opened", "opened_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=opened", "self": "https://gitlab.com/root/example-project/-/releases/v1.0.0" }, "assets": { "count": 2, "links": [], "sources": [ { "format": "zip", "url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.zip" }, { "format": "tar.gz", "url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.tar.gz" } ] }, "author": { "avatar_url": "https://www.gravatar.com/avatar/0?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "https://gitlab.com/root" }, "commit": { "author_email": "admin@example.com", "author_name": "Administrator", "authored_date": "2026-01-03T01:55:18.000Z", "committed_date": "2026-01-03T01:55:18.000Z", "committer_email": "admin@example.com", "committer_name": "Administrator", "created_at": "2026-01-03T01:55:18.000Z", "id": "588440f66559714280628a4f9799f0c4eb880a7", "message": "Merge branch 'feature' into 'main'\n", "parent_ids": [ "281d3a76f31c812dbf48abce82ccf6860adedd81" ], "short_id": "588440f6", "title": "Merge branch 'feature' into 'main'" }, "commit_path": "/root/example-project/-/commit/588440f66559714280628a4f9799f0c4eb880a7", "created_at": "2026-01-03T01:56:19.539Z", "description": "## What's Changed\n\n- Added new feature\n- Fixed a bug", "evidence_sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf", "evidences": [ { "collected_at": "2026-01-03T01:56:19.552Z", "filepath": "https://gitlab.com/root/example-project/-/releases/v1.0.0/evidences/1.json", "sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf" } ], "milestones": [ { "created_at": "2025-12-01T09:30:00.000Z", "description": "", "due_date": "2026-01-01", "id": 51, "iid": 1, "issue_stats": { "closed": 5, "total": 5 }, "project_id": 24, "start_date": "2025-12-01", "state": "closed", "title": "v1.0", "updated_at": "2026-01-02T10:00:00.000Z", "web_url": "https://gitlab.com/root/example-project/-/milestones/1" } ], "name": "Release 1.0.0", "released_at": "2026-01-03T01:56:19.539Z", "tag_deleted": true, "tag_name": "v1.0.0", "tag_path": "/root/example-project/-/tags/v1.0.0", "upcoming_release": false }, "timestamp": "2026-01-03T01:56:19.552000000Z", "type": "gitlab.release"}Get Commit Status
Section titled “Get Commit Status”Component key: gitlab.getCommitStatus
The Get Commit Status component reads a commit’s overall CI status.
In GitLab a commit’s statuses are jobs grouped under pipelines, and GitLab rolls them up for you: every commit carries a single overall status and a last_pipeline. This component returns that native result - one meaningful state plus a link to the pipeline - rather than a list of every job.
Use Cases
Section titled “Use Cases”- Status gates: Check whether a commit is green before continuing
- Follow-up to Publish Commit Status: Read back a commit’s overall state
- Notifications: Report a commit’s CI outcome with a link to the pipeline
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the commit
- Ref (required): Commit SHA, branch name, or tag name to inspect (supports expressions)
Permissions
Section titled “Permissions”The connected token needs the read_api (or api) scope and at least the Reporter role on the project.
Output
Section titled “Output”Emits the commit object, including its overall status and last_pipeline (id, ref, sha, status, web_url).
Example Output
Section titled “Example Output”{ "data": { "author_email": "admin@example.com", "author_name": "Administrator", "authored_date": "2026-02-13T17:55:00.000Z", "committed_date": "2026-02-13T17:55:00.000Z", "committer_email": "admin@example.com", "committer_name": "Administrator", "created_at": "2026-02-13T17:55:00.000Z", "id": "18f3e63d05582537db6d183d9d557be09e1f90c8", "last_pipeline": { "created_at": "2026-02-13T18:00:00.000Z", "id": 1024, "iid": 21, "project_id": 84237809, "ref": "main", "sha": "18f3e63d05582537db6d183d9d557be09e1f90c8", "source": "push", "status": "failed", "updated_at": "2026-02-13T18:04:12.000Z", "web_url": "https://gitlab.com/my-group/my-project/-/pipelines/1024" }, "message": "feat: add health endpoint\n", "parent_ids": [ "a91957a858320c0e17f3a0eca7cfacbff50ea29a" ], "short_id": "18f3e63d", "stats": { "additions": 24, "deletions": 2, "total": 26 }, "status": "failed", "title": "feat: add health endpoint", "web_url": "https://gitlab.com/my-group/my-project/-/commit/18f3e63d05582537db6d183d9d557be09e1f90c8" }, "timestamp": "2026-02-13T18:04:12.000Z", "type": "gitlab.commit"}Get Issue
Section titled “Get Issue”Component key: gitlab.getIssue
The Get Issue component fetches a single issue from a GitLab project by its internal ID (IID).
Use Cases
Section titled “Use Cases”- Read state, then act: Look up an issue’s current title, description, state, labels, or assignees before deciding what to do next
- Data enrichment: Pull issue details into a workflow to combine with other information
- Status checking: Check whether an issue is open or closed before performing an action
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the issue
- Issue IID (required): The internal ID (IID) of the issue to fetch (supports expressions)
Output
Section titled “Output”Returns the issue object, including:
- id / iid: The internal and project-relative IDs of the issue
- title / description: The issue’s content
- state: The current state of the issue (opened/closed)
- labels, assignees, milestone: Metadata on the issue
- web_url: The URL to view the issue in GitLab
Example Output
Section titled “Example Output”{ "data": { "assignees": [ { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" } ], "author": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" }, "closed_at": null, "closed_by": null, "created_at": "2023-01-01T10:00:00.000Z", "description": "This is an example issue created via SuperPlane", "due_date": null, "id": 1, "iid": 1, "labels": [ "bug", "urgent" ], "milestone": null, "project_id": 3, "state": "opened", "title": "Example Issue", "updated_at": "2023-01-01T10:00:00.000Z", "web_url": "http://gitlab.example.com/gitlab-org/gitlab-test/issues/1" }, "timestamp": "2023-01-01T10:00:00.000Z", "type": "gitlab.getIssue"}Get Latest Pipeline
Section titled “Get Latest Pipeline”Component key: gitlab.getLatestPipeline
The Get Latest Pipeline component retrieves the newest pipeline for a GitLab project.
Configuration
Section titled “Configuration”- Project (required): The GitLab project to query
- Ref (optional): Branch or tag to scope the latest pipeline search
Example Output
Section titled “Example Output”{ "data": { "before_sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55", "committed_at": "2026-02-13T19:20:45.000Z", "coverage": "87.1", "created_at": "2026-02-13T19:21:00.000Z", "detailed_status": { "group": "success", "has_details": true, "icon": "status_success", "label": "passed", "text": "passed", "tooltip": "passed" }, "duration": 268, "finished_at": "2026-02-13T19:25:43.000Z", "id": 457882200, "iid": 9822, "project_id": 123456, "queued_duration": 12.6, "ref": "main", "sha": "afce89e8d28741d4f65ec71ad0a4174a801122cd", "source": "merge_request_event", "started_at": "2026-02-13T19:21:15.000Z", "status": "success", "tag": false, "updated_at": "2026-02-13T19:25:43.000Z", "user": { "avatar_url": "https://www.gravatar.com/avatar/ef56gh78", "id": 18, "name": "Alex Garcia", "username": "agarcia" }, "web_url": "https://gitlab.com/group/example-project/-/pipelines/457882200", "yaml_errors": null }, "timestamp": "2026-02-13T19:25:43.000Z", "type": "gitlab.pipeline"}Get Pipeline
Section titled “Get Pipeline”Component key: gitlab.getPipeline
The Get Pipeline component retrieves details for a specific GitLab pipeline.
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the pipeline
- Pipeline (required): Select a pipeline from the selected project
Output
Section titled “Output”Returns pipeline data including status, ref, SHA, and pipeline URL.
Example Output
Section titled “Example Output”{ "data": { "before_sha": "0000000000000000000000000000000000000000", "committed_at": "2026-02-13T17:59:22.000Z", "coverage": null, "created_at": "2026-02-13T18:00:00.000Z", "detailed_status": { "group": "running", "has_details": true, "icon": "status_running", "label": "running", "text": "running", "tooltip": "running" }, "duration": 0, "finished_at": null, "id": 457882113, "iid": 9821, "project_id": 123456, "queued_duration": 8.2, "ref": "main", "sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55", "source": "push", "started_at": "2026-02-13T18:00:12.000Z", "status": "running", "tag": false, "updated_at": "2026-02-13T18:00:10.000Z", "user": { "avatar_url": "https://www.gravatar.com/avatar/abc123", "id": 22, "name": "Jamie Rivera", "username": "jrivera" }, "web_url": "https://gitlab.com/group/example-project/-/pipelines/457882113", "yaml_errors": null }, "timestamp": "2026-02-13T18:00:10.000Z", "type": "gitlab.pipeline"}Get Pipeline Minutes Usage
Section titled “Get Pipeline Minutes Usage”Component key: gitlab.getPipelineMinutesUsage
The Get Pipeline Minutes Usage component retrieves CI/CD compute minutes usage for the current calendar month, for the namespace configured on the connected GitLab integration (its group, or the personal namespace if no group is set).
Prerequisites
Section titled “Prerequisites”This action calls GitLab’s GraphQL API, which requires the connected user to have access to the namespace’s usage quota data (at least the Owner role for groups).
Behavior
Section titled “Behavior”- Returns usage for the current calendar month
- Includes a per-project breakdown of minutes and shared runner duration
- When Projects are selected, only usage for those projects is included in the totals
- If the integration’s Group is a subgroup, usage is reported for its root group, since GitLab only tracks compute minutes at the root namespace
Configuration
Section titled “Configuration”- Projects (optional, multiselect): Limit the per-project breakdown and totals to specific projects. Leave empty to include all projects with usage.
Output
Section titled “Output”Returns:
month: The usage month name, e.g. “July”monthIso8601: The usage month as an ISO date, e.g. “2026-07-01”minutes: Total compute minutes usedsharedRunnersDuration: Total shared runner duration, in secondsprojects: Per-project breakdown (minutes, shared runner duration, and project details)
Use Cases
Section titled “Use Cases”- Billing monitoring: Track CI/CD minutes usage against the namespace’s quota
- Cost control: Alert when usage approaches a budget threshold
- Usage reporting: Generate periodic usage reports
References
Section titled “References”Example Output
Section titled “Example Output”{ "data": { "minutes": 245, "month": "July", "monthIso8601": "2026-07-01", "projects": [ { "minutes": 180, "project": { "fullPath": "felixgateru/hello-world", "id": "gid://gitlab/Project/80508544", "name": "hello-world" }, "sharedRunnersDuration": 10800 }, { "minutes": 65, "project": { "fullPath": "felixgateru/another-project", "id": "gid://gitlab/Project/80508999", "name": "another-project" }, "sharedRunnersDuration": 3900 } ], "sharedRunnersDuration": 14700 }, "timestamp": "2026-07-01T00:00:00.000000000Z", "type": "gitlab.pipelineMinutesUsage"}Get Release
Section titled “Get Release”Component key: gitlab.getRelease
The Get Release component retrieves release information from a GitLab project.
Use Cases
Section titled “Use Cases”- Release monitoring: Fetch release details for use in downstream steps
- Deployment pipelines: Read release assets and metadata for deployment
- Version tracking: Check the project’s latest published release
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the release
- Release Strategy (required): Identify the release by a specific tag, or use the project’s latest release
- Tag Name (required if strategy is “Specific tag”): The tag of the release to retrieve
Output
Section titled “Output”Returns the release object.
Example Output
Section titled “Example Output”{ "data": { "_links": { "closed_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=closed", "closed_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=closed", "edit_url": "https://gitlab.com/root/example-project/-/releases/v1.0.0/edit", "merged_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=merged", "opened_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=opened", "opened_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=opened", "self": "https://gitlab.com/root/example-project/-/releases/v1.0.0" }, "assets": { "count": 2, "links": [], "sources": [ { "format": "zip", "url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.zip" }, { "format": "tar.gz", "url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.tar.gz" } ] }, "author": { "avatar_url": "https://www.gravatar.com/avatar/0?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "https://gitlab.com/root" }, "commit": { "author_email": "admin@example.com", "author_name": "Administrator", "authored_date": "2026-01-03T01:55:18.000Z", "committed_date": "2026-01-03T01:55:18.000Z", "committer_email": "admin@example.com", "committer_name": "Administrator", "created_at": "2026-01-03T01:55:18.000Z", "id": "588440f66559714280628a4f9799f0c4eb880a7", "message": "Merge branch 'feature' into 'main'\n", "parent_ids": [ "281d3a76f31c812dbf48abce82ccf6860adedd81" ], "short_id": "588440f6", "title": "Merge branch 'feature' into 'main'" }, "commit_path": "/root/example-project/-/commit/588440f66559714280628a4f9799f0c4eb880a7", "created_at": "2026-01-03T01:56:19.539Z", "description": "## What's Changed\n\n- Added new feature\n- Fixed a bug", "evidence_sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf", "evidences": [ { "collected_at": "2026-01-03T01:56:19.552Z", "filepath": "https://gitlab.com/root/example-project/-/releases/v1.0.0/evidences/1.json", "sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf" } ], "milestones": [ { "created_at": "2025-12-01T09:30:00.000Z", "description": "", "due_date": "2026-01-01", "id": 51, "iid": 1, "issue_stats": { "closed": 5, "total": 5 }, "project_id": 24, "start_date": "2025-12-01", "state": "closed", "title": "v1.0", "updated_at": "2026-01-02T10:00:00.000Z", "web_url": "https://gitlab.com/root/example-project/-/milestones/1" } ], "name": "Release 1.0.0", "released_at": "2026-01-03T01:56:19.539Z", "tag_name": "v1.0.0", "tag_path": "/root/example-project/-/tags/v1.0.0", "upcoming_release": false }, "timestamp": "2026-01-03T01:56:19.552000000Z", "type": "gitlab.release"}Get Test Report Summary
Section titled “Get Test Report Summary”Component key: gitlab.getTestReportSummary
The Get Test Report Summary component fetches the test report summary for a GitLab pipeline.
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the pipeline
- Pipeline (required): Select a pipeline from the selected project
Example Output
Section titled “Example Output”{ "data": { "test_suites": [ { "build_ids": [ 8934210 ], "error_count": 0, "failed_count": 1, "name": "backend-rspec", "skipped_count": 0, "success_count": 247, "suite_error": null, "total_count": 248, "total_time": 81.27 }, { "build_ids": [ 8934211 ], "error_count": 0, "failed_count": 1, "name": "frontend-jest", "skipped_count": 1, "success_count": 162, "suite_error": null, "total_count": 164, "total_time": 71.19 } ], "total": { "count": 412, "error": 0, "failed": 2, "skipped": 1, "success": 409, "suite_error": null, "time": 152.46 } }, "timestamp": "2026-02-13T19:26:01.000Z", "type": "gitlab.testReportSummary"}Mark Merge Request Ready for Review
Section titled “Mark Merge Request Ready for Review”Component key: gitlab.markMergeRequestReadyForReview
The Mark Merge Request Ready for Review component takes a draft merge request out of the draft state, the same as clicking “Mark as ready” on GitLab.
Use Cases
Section titled “Use Cases”- Promote drafts automatically: Mark a draft merge request ready once CI checks pass
- Release trains: Open drafts early and promote them for review when the branch is ready
- Bot workflows: Let an automation open work as a draft and hand it to reviewers when complete
Configuration
Section titled “Configuration”- Project: Select the GitLab project containing the merge request
- Merge Request IID: The internal ID (IID) of the merge request to mark ready for review. Expressions are supported.
Behavior
Section titled “Behavior”This component is idempotent: if the merge request is already out of the draft state, it succeeds without calling GitLab again and emits the merge request as it is.
Permissions
Section titled “Permissions”GitLab does not expose a dedicated REST field for clearing draft status, so the component applies the same /ready quick action the GitLab UI uses. This is submitted as a note on the merge request, so the connected user needs permission to comment on it.
Output
Section titled “Output”Returns the merge request object after it has been marked ready for review.
Example Output
Section titled “Example Output”{ "data": { "assignees": [], "author": { "avatar_url": "https://www.gravatar.com/avatar/abc123", "id": 22, "name": "Jamie Rivera", "state": "active", "username": "jrivera", "web_url": "https://gitlab.example.com/jrivera" }, "closed_at": null, "closed_by": null, "created_at": "2026-02-13T08:46:00.000Z", "description": "Adds the new login page with SSO support", "detailed_merge_status": "mergeable", "draft": false, "id": 1, "iid": 42, "labels": [], "merge_commit_sha": null, "merge_error": null, "merge_user": null, "merged_at": null, "milestone": null, "project_id": 3, "reviewers": [], "sha": "8888888888888888888888888888888888888888", "should_remove_source_branch": false, "source_branch": "feature/login-page", "squash": false, "squash_commit_sha": null, "state": "opened", "target_branch": "main", "title": "feat: add login page", "updated_at": "2026-02-13T09:02:11.000Z", "web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42" }, "timestamp": "2026-02-13T09:02:11.000Z", "type": "gitlab.mergeRequest"}Publish Commit Status
Section titled “Publish Commit Status”Component key: gitlab.publishCommitStatus
The Publish Commit Status component sets a build/CI status on a specific commit, the way GitLab CI and external CI systems report per-commit check results.
Use Cases
Section titled “Use Cases”- External CI reporting: Report the outcome of a build, test, or scan run outside GitLab back onto the commit
- Gate signalling: Mark a commit pending while a workflow runs, then success or failed when it finishes
- Custom checks: Surface a workflow’s own pass/fail state on the commit and merge request
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the commit
- Commit SHA (required): The commit to attach the status to (supports expressions)
- State (required): One of pending, running, success, failed, canceled, skipped
- Name (optional): Label distinguishing this status from others on the same commit (GitLab defaults to
default) - Target URL (optional): URL the status links to, e.g. the build or job page
- Description (optional): Short description shown alongside the status
- Ref (optional): Branch or tag the status is reported for
- Coverage (optional): Total code coverage percentage
- Pipeline ID (optional): Attach the status to a specific pipeline when several ran on the commit
Permissions
Section titled “Permissions”The connected token needs the api scope and at least the Developer role on the project.
Output
Section titled “Output”Returns the created commit status object.
Example Output
Section titled “Example Output”{ "data": { "allow_failure": false, "author": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "https://gitlab.com/root" }, "coverage": 92.5, "created_at": "2026-02-13T18:00:00.000Z", "description": "Build passed", "finished_at": "2026-02-13T18:04:12.000Z", "id": 93, "name": "ci/superplane", "pipeline_id": 1024, "ref": "main", "sha": "18f3e63d05582537db6d183d9d557be09e1f90c8", "started_at": "2026-02-13T18:00:05.000Z", "status": "success", "target_url": "https://gitlab.com/my-group/my-project/-/pipelines/1024" }, "timestamp": "2026-02-13T18:04:12.000Z", "type": "gitlab.commitStatus"}Remove Merge Request Reviewers
Section titled “Remove Merge Request Reviewers”Component key: gitlab.removeMergeRequestReviewers
The Remove Merge Request Reviewers component removes reviewers from an existing GitLab merge request. Reviewers that are not listed are kept.
Use Cases
Section titled “Use Cases”- Automated cleanup: Remove a reviewer once their review is no longer needed
- Reassignment: Remove a reviewer before adding a different one as part of a workflow
- Rotation: Drop an out-of-office reviewer from an open merge request
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the merge request
- Merge Request IID (required): The internal ID (IID) of the merge request (supports expressions)
- Reviewers (required): Users to remove from the merge request’s reviewers. Reviewers not listed are kept.
Permissions
Section titled “Permissions”The connected user needs at least the Developer role on the project to change reviewers.
Output
Section titled “Output”Returns the updated merge request object, including its remaining reviewer list and URL.
Example Output
Section titled “Example Output”{ "data": { "assignees": [], "author": { "avatar_url": "https://www.gravatar.com/avatar/abc123", "id": 22, "name": "Jamie Rivera", "state": "active", "username": "jrivera", "web_url": "https://gitlab.example.com/jrivera" }, "closed_at": null, "closed_by": null, "created_at": "2026-02-13T08:46:00.000Z", "description": "Adds the new login page with SSO support", "detailed_merge_status": "mergeable", "draft": false, "id": 1, "iid": 42, "labels": [ "feature" ], "merge_commit_sha": null, "merge_error": null, "merge_user": null, "merged_at": null, "milestone": null, "project_id": 3, "reviewers": [ { "avatar_url": "https://www.gravatar.com/avatar/def456", "id": 30, "name": "Alex Morgan", "state": "active", "username": "amorgan", "web_url": "https://gitlab.example.com/amorgan" } ], "sha": "8888888888888888888888888888888888888888", "should_remove_source_branch": true, "source_branch": "feature/login-page", "squash": false, "squash_commit_sha": null, "state": "opened", "target_branch": "main", "title": "feat: add login page", "updated_at": "2026-02-13T09:45:00.000Z", "web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42" }, "timestamp": "2026-02-13T09:45:00.000Z", "type": "gitlab.mergeRequest"}Run Pipeline
Section titled “Run Pipeline”Component key: gitlab.runPipeline
The Run Pipeline component triggers a GitLab pipeline and waits for it to complete.
Use Cases
Section titled “Use Cases”- CI/CD orchestration: Trigger GitLab pipelines from SuperPlane workflows
- Deployment automation: Run deployment pipelines with inputs
- Pipeline chaining: Coordinate follow-up actions after pipeline completion
Example Output
Section titled “Example Output”{ "data": { "pipeline": { "before_sha": "0000000000000000000000000000000000000000", "committed_at": "2026-02-13T17:59:22.000Z", "coverage": "86.5", "created_at": "2026-02-13T18:00:00.000Z", "detailed_status": { "group": "success", "has_details": true, "icon": "status_success", "label": "passed", "text": "passed", "tooltip": "passed" }, "duration": 240, "finished_at": "2026-02-13T18:04:12.000Z", "id": 457882113, "iid": 9821, "project_id": 123456, "queued_duration": 8.2, "ref": "main", "sha": "f4f6c5a0d2e5ad34be4c17c3f166f4d2ff8b0a55", "source": "web", "started_at": "2026-02-13T18:00:12.000Z", "status": "success", "tag": false, "updated_at": "2026-02-13T18:04:12.000Z", "url": "https://gitlab.com/group/example-project/-/pipelines/457882113", "user": { "avatar_url": "https://www.gravatar.com/avatar/abc123", "id": 22, "name": "Jamie Rivera", "username": "jrivera" }, "web_url": "https://gitlab.com/group/example-project/-/pipelines/457882113", "yaml_errors": null } }, "timestamp": "2026-02-13T18:04:12.000Z", "type": "gitlab.pipeline.finished"}Update Issue
Section titled “Update Issue”Component key: gitlab.updateIssue
The Update Issue component modifies an existing GitLab issue: its title, description, state, labels, assignees, or milestone.
Use Cases
Section titled “Use Cases”- Status updates: Close or reopen an issue based on workflow results
- Label management: Apply labels to an issue automatically
- Assignee updates: Assign an issue to team members automatically
- Content updates: Update the issue title or description with new information
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the issue
- Issue IID (required): The internal ID (IID) of the issue to update (supports expressions)
- Title (toggle): New title for the issue
- Description (toggle): New description for the issue
- State (toggle): Close or reopen the issue
- Labels to Add (toggle): Labels to add to the issue, keeping any existing labels
- Assignees (toggle): Users to assign the issue to, replacing any existing assignees
- Milestone (toggle): Milestone to associate with the issue
Each field besides Project and Issue IID is toggled on individually, so only the fields you enable are sent in the update. At least one must be enabled. Title is the exception: GitLab does not allow blank titles, so it must have a value when enabled.
List and reference fields: append vs. replace
Section titled “List and reference fields: append vs. replace”These fields behave differently, because GitLab’s API exposes them differently:
| Field | Behaviour | Enabled with nothing selected |
|---|---|---|
| Labels to Add | Appends — sent as add_labels, so labels already on the issue are kept | No change |
| Assignees | Replaces — sent as assignee_ids, which overwrites the whole list | Clears all assignees |
| Milestone | Replaces — a single milestone_id | Unassigns the milestone |
Because labels only ever append, this component cannot remove a label. Use GitLab’s own label controls when you need to take one off.
Output
Section titled “Output”Returns the updated issue object.
Example Output
Section titled “Example Output”{ "data": { "assignees": [ { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" } ], "author": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" }, "closed_at": "2023-01-01T10:05:00.000Z", "closed_by": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" }, "created_at": "2023-01-01T10:00:00.000Z", "description": "This is an example issue updated via SuperPlane", "due_date": null, "id": 1, "iid": 1, "labels": [ "bug", "urgent" ], "milestone": null, "project_id": 3, "state": "closed", "title": "Example Issue", "updated_at": "2023-01-01T10:05:00.000Z", "web_url": "http://gitlab.example.com/gitlab-org/gitlab-test/issues/1" }, "timestamp": "2023-01-01T10:05:00.000Z", "type": "gitlab.updateIssue"}Update Issue Comment
Section titled “Update Issue Comment”Component key: gitlab.updateIssueComment
The Update Issue Comment component edits an existing comment (note) on a GitLab issue.
Use Cases
Section titled “Use Cases”- Status updates: Update a summary comment on an issue instead of posting new comments on every run
- Living reports: Keep a single comment with the latest deployment status, test results, or remediation steps
- Avoid spam: Update one comment instead of flooding an issue with repeated bot comments
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the issue
- Issue IID (required): The internal ID (IID) of the issue the comment belongs to (supports expressions)
- Comment ID (required): The numeric ID of the comment (note) to update (supports expressions)
- Body (toggle): The new comment text (supports Markdown and expressions). It is the only editable field on a GitLab note, so it must be enabled for the update to change anything, and cannot be empty when enabled.
Permissions
Section titled “Permissions”The connected user must be the comment’s author, or have at least the Maintainer role on the project, to edit it.
Output
Section titled “Output”Returns the updated note object, including its ID, body, author, and timestamps.
- The comment ID is returned in the output of
gitlab.createIssueCommentasid - You can store the comment ID in canvas memory on the first run, then reuse it for subsequent updates
Example Output
Section titled “Example Output”{ "data": { "author": { "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "http://gitlab.example.com/root" }, "body": "Updated: deployment finished successfully at 10:15 UTC", "confidential": false, "created_at": "2023-01-01T10:00:00.000Z", "id": 302, "internal": false, "noteable_id": 1, "noteable_iid": 1, "noteable_type": "Issue", "project_id": 1, "resolvable": false, "system": false, "updated_at": "2023-01-01T10:15:00.000Z" }, "timestamp": "2023-01-01T10:15:00.000Z", "type": "gitlab.updateIssueComment"}Update Merge Request
Section titled “Update Merge Request”Component key: gitlab.updateMergeRequest
The Update Merge Request component modifies an existing GitLab merge request: its title, description, target branch, state, labels, or assignees.
Use Cases
Section titled “Use Cases”- Retitle/redescribe automation: Update a merge request’s title or description as a workflow progresses
- Open/close automation: Close a merge request when it is superseded, or reopen one automatically
- Retargeting: Change the target branch a merge request merges into
- Label and assignee management: Add labels to a merge request or set its assignees from a workflow
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the merge request
- Merge Request IID (required): The internal ID (IID) of the merge request to update (supports expressions)
- Title (toggle): New title for the merge request
- Description (toggle): New description for the merge request
- Target Branch (toggle): Retarget the merge request onto a different branch
- State (toggle): Close or reopen the merge request
- Labels to Add (toggle): Labels to add, keeping any existing labels
- Assignees (toggle): Users to assign, replacing any existing assignees
Each field besides Project and Merge Request IID is toggled on individually, so only the fields you enable are sent in the update. At least one must be enabled. Title and Target Branch are the exception: GitLab rejects a blank title, and an empty target branch cannot resolve to a real branch, so both must have a value when enabled.
List fields: append vs. replace
Section titled “List fields: append vs. replace”The two list fields behave differently, because GitLab’s API exposes them differently:
| Field | Behaviour | Enabled with nothing selected |
|---|---|---|
| Labels to Add | Appends — sent as add_labels, so labels already on the merge request are kept | No change |
| Assignees | Replaces — sent as assignee_ids, which overwrites the whole list | Clears all assignees |
Because labels only ever append, this component cannot remove a label. Use GitLab’s own label controls, or a dedicated label action, when you need to take one off.
Permissions
Section titled “Permissions”The connected user needs at least the Developer role on the project (or be the merge request author) to update a merge request.
Output
Section titled “Output”Returns the updated merge request object.
Example Output
Section titled “Example Output”{ "data": { "assignees": [ { "avatar_url": "https://www.gravatar.com/avatar/def456", "id": 30, "name": "Alex Morgan", "state": "active", "username": "amorgan", "web_url": "https://gitlab.example.com/amorgan" } ], "author": { "avatar_url": "https://www.gravatar.com/avatar/abc123", "id": 22, "name": "Jamie Rivera", "state": "active", "username": "jrivera", "web_url": "https://gitlab.example.com/jrivera" }, "closed_at": null, "closed_by": null, "created_at": "2026-02-13T08:46:00.000Z", "description": "Adds the new login page with SSO support and MFA", "detailed_merge_status": "mergeable", "draft": false, "id": 155, "iid": 42, "labels": [ "feature", "needs-review" ], "merge_commit_sha": null, "merge_error": null, "merge_user": null, "merged_at": null, "milestone": null, "project_id": 3, "reviewers": [ { "avatar_url": "https://www.gravatar.com/avatar/def456", "id": 30, "name": "Alex Morgan", "state": "active", "username": "amorgan", "web_url": "https://gitlab.example.com/amorgan" } ], "sha": "8888888888888888888888888888888888888888", "should_remove_source_branch": true, "source_branch": "feature/login-page", "squash": false, "squash_commit_sha": null, "state": "opened", "target_branch": "develop", "title": "feat: add login page (updated)", "updated_at": "2026-02-14T09:12:33.000Z", "web_url": "https://gitlab.example.com/my-group/my-project/-/merge_requests/42" }, "timestamp": "2026-02-14T09:12:33.000Z", "type": "gitlab.mergeRequest"}Update Release
Section titled “Update Release”Component key: gitlab.updateRelease
The Update Release component modifies an existing GitLab release: its name, description, milestones, or release date.
Use Cases
Section titled “Use Cases”- Release notes updates: Fill in release notes after the release has been cut
- Milestone linking: Associate a release with milestones once they’re finalized
- Rescheduling: Move an upcoming release’s date
Configuration
Section titled “Configuration”- Project (required): The GitLab project containing the release
- Release Strategy (required): Identify the release by a specific tag, or use the project’s latest release
- Tag Name (required if strategy is “Specific tag”): The tag of the release to update
- Release Name (toggle): New release title
- Description (toggle): New release notes, in Markdown
- Milestones (toggle): Milestones to associate with the release, replacing any existing ones
- Released At (toggle): New release date
Each field besides Project, Release Strategy and Tag Name is toggled on individually, so only the fields you enable are sent in the update. At least one must be enabled. Enabling Milestones with nothing selected clears them. Released At is the exception: GitLab requires a valid date, so it must have a value when enabled.
Output
Section titled “Output”Returns the updated release object.
Example Output
Section titled “Example Output”{ "data": { "_links": { "closed_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=closed", "closed_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=closed", "edit_url": "https://gitlab.com/root/example-project/-/releases/v1.0.0/edit", "merged_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=merged", "opened_issues_url": "https://gitlab.com/root/example-project/-/issues?release_tag=v1.0.0\u0026scope=all\u0026state=opened", "opened_merge_requests_url": "https://gitlab.com/root/example-project/-/merge_requests?release_tag=v1.0.0\u0026scope=all\u0026state=opened", "self": "https://gitlab.com/root/example-project/-/releases/v1.0.0" }, "assets": { "count": 2, "links": [], "sources": [ { "format": "zip", "url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.zip" }, { "format": "tar.gz", "url": "https://gitlab.com/root/example-project/-/archive/v1.0.0/example-project-v1.0.0.tar.gz" } ] }, "author": { "avatar_url": "https://www.gravatar.com/avatar/0?s=80\u0026d=identicon", "id": 1, "name": "Administrator", "state": "active", "username": "root", "web_url": "https://gitlab.com/root" }, "commit": { "author_email": "admin@example.com", "author_name": "Administrator", "authored_date": "2026-01-03T01:55:18.000Z", "committed_date": "2026-01-03T01:55:18.000Z", "committer_email": "admin@example.com", "committer_name": "Administrator", "created_at": "2026-01-03T01:55:18.000Z", "id": "588440f66559714280628a4f9799f0c4eb880a7", "message": "Merge branch 'feature' into 'main'\n", "parent_ids": [ "281d3a76f31c812dbf48abce82ccf6860adedd81" ], "short_id": "588440f6", "title": "Merge branch 'feature' into 'main'" }, "commit_path": "/root/example-project/-/commit/588440f66559714280628a4f9799f0c4eb880a7", "created_at": "2026-01-03T01:56:19.539Z", "description": "## What's Changed\n\n- Added new feature\n- Fixed a bug\n- Updated release notes", "evidences": [ { "collected_at": "2026-01-03T01:56:19.552Z", "filepath": "https://gitlab.com/root/example-project/-/releases/v1.0.0/evidences/1.json", "sha": "760d6cdfb0879c95bc55d7b072f1252c8cdcf5cf" } ], "milestones": [ { "created_at": "2025-12-01T09:30:00.000Z", "description": "", "due_date": "2026-01-01", "id": 51, "iid": 1, "issue_stats": { "closed": 5, "total": 5 }, "project_id": 24, "start_date": "2025-12-01", "state": "closed", "title": "v1.0", "updated_at": "2026-01-02T10:00:00.000Z", "web_url": "https://gitlab.com/root/example-project/-/milestones/1" } ], "name": "Release 1.0.0", "released_at": "2026-01-03T01:56:19.539Z", "tag_name": "v1.0.0", "tag_path": "/root/example-project/-/tags/v1.0.0", "upcoming_release": false }, "timestamp": "2026-01-03T02:10:00.000000000Z", "type": "gitlab.release"}