{{trigger.issue.title}} or {{trigger.repository.fullName}}.
All event properties are platform-agnostic—they work consistently whether your event comes from GitHub, GitLab, Jira, Bitbucket, or Azure DevOps. Overcut automatically normalizes platform-specific data into this standardized format.
Template Variable Syntax
Access event context properties using double curly braces:- Agent instructions
- Action parameters
- Conditional logic
- Step outputs
Base Event Properties
These properties are available for all event types:Event Metadata
The standardized event type that triggered the workflow (e.g.,
issue_opened, pull_request_merged, mention).Example: {{trigger.eventType}}Human-readable name of the object that triggered the event.Example:
{{trigger.triggerObjectName}}Number or identifier of the triggering object (issue number, PR number, etc.).Example:
{{trigger.triggerObjectNumber}}Direct URL to the triggering object in the source platform.Example:
{{trigger.triggerObjectUrl}}Repository Context
Repository name (e.g.,
"blog-server").Example: {{trigger.repository.name}}Full repository name including owner (e.g.,
"acme/blog-server").Example: {{trigger.repository.fullName}}Repository owner username or organization name.Example:
{{trigger.repository.owner}}Clone URL for the repository.Example:
{{trigger.repository.url}}Default branch name (e.g.,
"main", "master").Example: {{trigger.repository.defaultBranch}}Git provider name (e.g.,
"github", "gitlab", "bitbucket").Example: {{trigger.repository.provider}}Actor Context
The user or bot that triggered the event.Username or login of the actor.Example:
{{trigger.actor.login}}Display name of the actor.Example:
{{trigger.actor.name}}Email address of the actor (if available).Example:
{{trigger.actor.email}}Type of actor:
"User", "Bot", or "Organization".Example: {{trigger.actor.type}}Organization Context
Available when the repository belongs to an organization.Organization username or login.Example:
{{trigger.organization.login}}Organization display name.Example:
{{trigger.organization.name}}Issue Event Properties
Available for issue-related events:issue_opened, issue_closed, issue_edited, issue_assigned, issue_unassigned, issue_labeled, issue_unlabeled, issue_commented.
Core Issue Properties
Issue number (unique within the repository).Example:
{{trigger.issue.number}}Issue title.Example:
{{trigger.issue.title}}Current state of the issue:
"open" or "closed".Example: {{trigger.issue.state}}Issue description or body content.Example:
{{trigger.issue.body}}Username of the issue author.Example:
{{trigger.issue.author}}Issue Metadata
Array of label names attached to the issue.Example:
{{trigger.issue.labels}} or {{trigger.issue.labels.[0]}} for first labelArray of usernames assigned to the issue.Example:
{{trigger.issue.assignees}} or {{trigger.issue.assignees.[0]}}Milestone title if the issue is assigned to a milestone.Example:
{{trigger.issue.milestone}}Normalized issue type coming from the source tracker (e.g.,
"Bug", "Task", "Story"). Use this to branch workflows by work item type without writing provider-specific logic.Example: {{trigger.issue.workItemType}}GitHub issues may return an empty string because the platform does not classify issues, while Jira, GitLab, and Azure DevOps provide their native issue types.
Whether the issue is confidential.Example:
{{trigger.issue.confidential}}GitLab only - This property is only available for GitLab issues. Returns
undefined for other providers.Issue Timestamps
ISO timestamp when the issue was created.Example:
{{trigger.issue.createdAt}}ISO timestamp when the issue was last updated.Example:
{{trigger.issue.updatedAt}}ISO timestamp when the issue was closed (if applicable).Example:
{{trigger.issue.closedAt}}Pull Request Event Properties
Available for PR-related events:pull_request_opened, pull_request_closed, pull_request_merged, pull_request_edited, pull_request_reviewed, pull_request_assigned, pull_request_unassigned, pull_request_labeled, pull_request_unlabeled, pull_request_commented, pull_request_review_commented.
- Always
trueforpull_request_openedevents (initial commit set). trueforpull_request_editedonly when the edit originates from new commits.falsefor metadata-only changes such as title/body edits, label updates, or reviewer requests.
GitLab and GitHub only - This property is only available for GitLab and GitHub pull requests. Returns
false for other providers.Core Pull Request Properties
Pull request number.Example:
{{trigger.pullRequest.number}}Pull request title.Example:
{{trigger.pullRequest.title}}Current state:
"open", "closed", or "merged".Example: {{trigger.pullRequest.state}}Pull request description or body content.Example:
{{trigger.pullRequest.body}}Username of the pull request author.Example:
{{trigger.pullRequest.author}}Branch Information
Target branch name (where the PR will be merged into).Example:
{{trigger.pullRequest.baseBranch}}Source branch name (the branch with changes).Example:
{{trigger.pullRequest.headBranch}}Base commit SHA.Example:
{{trigger.pullRequest.baseSha}}Not available on GitLab - GitLab webhooks don’t include the base SHA (would require an additional API call).
Head commit SHA.Example:
{{trigger.pullRequest.headSha}}Merge commit SHA (available after merge).Example:
{{trigger.pullRequest.mergeCommitSha}}Pull Request Metadata
Array of label names attached to the pull request.Example:
{{trigger.pullRequest.labels}}Array of assignee usernames.Example:
{{trigger.pullRequest.assignees}}Array of requested reviewer usernames.Example:
{{trigger.pullRequest.requestedReviewers}}GitHub only - GitLab returns an empty array (no explicit reviewer request concept). Not available on Bitbucket or Azure DevOps.
Milestone title if assigned.Example:
{{trigger.pullRequest.milestone}}Whether the pull request is a draft.Example:
{{trigger.pullRequest.draft}}Change Statistics
GitHub only - Change statistics (additions, deletions, changedFiles) are only available for GitHub pull requests. Other providers don’t include these metrics in their webhook payloads.
Number of lines added.Example:
{{trigger.pullRequest.additions}}Number of lines deleted.Example:
{{trigger.pullRequest.deletions}}Number of files changed.Example:
{{trigger.pullRequest.changedFiles}}Merge Status
Whether the pull request can be merged (null if unknown).Example:
{{trigger.pullRequest.mergeable}}GitHub and GitLab only - Not available on Bitbucket or Azure DevOps.
Whether the pull request can be rebased (null if unknown).Example:
{{trigger.pullRequest.rebaseable}}GitHub only - Not available on other providers.
Whether auto-merge is enabled.Example:
{{trigger.pullRequest.autoMerge}}GitHub only - Not available on other providers.
Pull Request Timestamps
ISO timestamp when the pull request was created.Example:
{{trigger.pullRequest.createdAt}}ISO timestamp when the pull request was last updated.Example:
{{trigger.pullRequest.updatedAt}}ISO timestamp when the pull request was closed (if applicable).Example:
{{trigger.pullRequest.closedAt}}ISO timestamp when the pull request was merged (if applicable).Example:
{{trigger.pullRequest.mergedAt}}Action-Specific Context
These properties provide additional context about the specific action that triggered the event.Label Operations
Available forissue_labeled, issue_unlabeled, pull_request_labeled, pull_request_unlabeled events.
The label that was added or removed.Example:
{{trigger.label}}The action performed:
"added" or "removed".Example: {{trigger.labelAction}}Assignee Operations
Available forissue_assigned, issue_unassigned, pull_request_assigned, pull_request_unassigned events.
Username of the assignee that was added or removed.Example:
{{trigger.assignee}}The action performed:
"assigned" or "unassigned".Example: {{trigger.assigneeAction}}Milestone Operations
The milestone that was added or removed.Example:
{{trigger.milestone}}The action performed:
"added" or "removed".Example: {{trigger.milestoneAction}}Comment Operations
Available forissue_commented, pull_request_commented, pull_request_review_commented events.
Comment ID from the git provider.Example:
{{trigger.commentId}}Username of the comment author.Example:
{{trigger.commentAuthor}}Full content of the comment.Example:
{{trigger.commentBody}}Where the comment was made:
"issue" or "pull_request".Example: {{trigger.commentLocation}}ISO timestamp when the comment was created.Example:
{{trigger.commentCreatedAt}}Review Operations
Available forpull_request_reviewed events.
Username of the reviewer.Example:
{{trigger.reviewer}}Review state:
"approved", "changes_requested", "commented", or "dismissed".Example: {{trigger.reviewState}}Review action:
"submitted", "edited", or "dismissed".Example: {{trigger.reviewAction}}Mention Operations
Available formention events.
Username of the user who mentioned the bot.Example:
{{trigger.mentionedBy}}Where the mention occurred (e.g.,
"issue", "pull_request", "comment").Example: {{trigger.mentionLocation}}The full message or content containing the mention.Example:
{{trigger.mentionContent}}Slash Command Operations
Available forslash_command events.
The slash command that was used (e.g.,
"/review").Example: {{trigger.slashCommand}}Whether the slash command was used with an @mention.Example:
{{trigger.slashCommandWithMention}}Practical Examples
Example 1: Accessing Issue Properties
Use issue properties in an agent instruction:Example 2: Clone PR Branch
Use pull request branch information in git operations:Example 3: Conditional Logic Based on Event State
Use Handlebars helpers for conditional logic:Example 4: Working with Arrays
Access array elements and iterate:Example 5: Mention the Original Author
Reference the event author in responses:Example 6: Use Comment Context
Access comment-specific properties:Example 7: Conditional Repository Selection
Combine with conditional logic for dynamic behavior:Example 8: Filter by Actor Type
Exclude bot-triggered events:Example 9: Run Workflow Only When Commits Are Added to a PR
Use thetrigger.commitAdded flag to avoid running expensive jobs on metadata-only changes:
Template Helpers
Overcut supports Handlebars helpers for advanced logic:Comparison Helpers
{{#if (eq value1 value2)}}- Equals{{#if (ne value1 value2)}}- Not equals{{#if (gt value1 value2)}}- Greater than{{#if (lt value1 value2)}}- Less than{{#if (gte value1 value2)}}- Greater than or equal{{#if (lte value1 value2)}}- Less than or equal
Logical Helpers
{{#if (and condition1 condition2)}}- Logical AND{{#if (or condition1 condition2)}}- Logical OR{{#if (not condition)}}- Logical NOT
Iteration
{{#each array}}...{{/each}}- Iterate over arrays{{@index}}- Current iteration index{{@first}}/{{@last}}- First/last iteration flags
Notes and Best Practices
Platform Normalization
All properties are automatically normalized from platform-specific formats. For example, GitHub’spull_request becomes pullRequest, and Jira’s key becomes number.
Property Availability
Not all properties are available for all events. For example,trigger.pullRequest is only available for pull request events, and trigger.issue only for issue events. Optional properties may be null or undefined if not provided by the platform.
Provider-Specific Properties
While Overcut normalizes events across all platforms, some properties are only available from specific providers due to webhook payload limitations: Issue Properties:confidential- GitLab only
additions,deletions,changedFiles- GitHub onlyautoMerge,rebaseable- GitHub onlymergeable- GitHub and GitLab onlyrequestedReviewers- GitHub only (GitLab returns empty array)baseSha- Not available on GitLab
Array Access
When accessing array elements, always check if the array exists first using{{#if trigger.issue.labels}} to avoid template rendering errors.
Dynamic Workflows
Combine event context with step outputs ({{outputs.step-id.property}}) for powerful dynamic workflows that adapt based on runtime data.