Skip to main content

New Relic Integration Guide

Last updated on

Configure New Relic Alerts to send webhook notifications to Harness AI SRE when issues are created or updated.

Before you begin

  • Harness webhook endpoint: Create a New Relic webhook in Harness AI SRE using the New Relic webhook template.
  • New Relic access: Permissions to create workflows and notification destinations.
  • Webhook URL: Copy the webhook URL from your Harness webhook configuration.
  • New Relic version: This guide covers New Relic's Applied Intelligence workflows (current notification system).
  • Workflows documentation: Go to Applied Intelligence - Workflows to understand workflow configuration.
  • Webhook destination reference: Go to Notification Destinations for webhook setup details.

Create webhook destination

Open the destinations configuration in New Relic:

  1. In New Relic, go to Alerts & AI, then select Destinations
  2. Click Create destination

Configure webhook destination

  • Destination name: Harness AI SRE
  • Destination type: Select Webhook
  • Endpoint URL: Your Harness webhook URL
    https://<your-harness-instance>/gateway/ai-sre/api/webhooks/<webhook-id>
  • Authentication: None (or Bearer token if required)

Test destination

Click Test connection to verify the webhook is reachable.

Save destination

Click Create destination to save.


Create notification channel

Open the channels configuration in New Relic:

  1. Go to Alerts & AI, then select Channels
  2. Click Create channel

Configure channel

Set the channel name, destination, and triggers:

  • Channel name: Harness AI SRE Channel
  • Destination: Select Harness AI SRE (the destination you just created)
  • Notification trigger: Select events to send
    • Issue activated
    • Issue acknowledged
    • Issue priority changed
    • Issue closed

Save channel

Click Create channel.


Create workflow

Open the workflows configuration in New Relic:

  1. Go to Alerts & AI, then select Workflows
  2. Click Add a workflow

Configure workflow

  • Workflow name: Send to Harness AI SRE
  • Filter data: Configure filters (optional)
    • Filter by priority: Critical or High
    • Filter by entity type: Application, Host, etc.
  • Enrich data: Add enrichments (optional)
  • Notify: Select Harness AI SRE Channel

Activate workflow

Toggle Active to enable the workflow.

Save workflow

Click Save workflow.


Configure field mapping in Harness

In your Harness webhook configuration, map New Relic payload fields to alert properties.

New Relic webhook payload structure

{
"id": "issue-123",
"issueId": "issue-123",
"issueTitle": "High Error Rate on Application XYZ",
"issuePageUrl": "https://one.newrelic.com/issues/issue-123",
"priority": "CRITICAL",
"state": "ACTIVATED",
"triggerEvent": "STATE_CHANGE",
"createdAt": 1625097600000,
"updatedAt": 1625097600000,
"violationChartUrl": "https://chart.googleapis.com/chart?...",
"nrAccountId": 12345,
"nrAccountName": "My Company",
"entitiesData": {
"entities": [
{
"id": "entity-456",
"name": "Application XYZ",
"type": "APPLICATION"
}
]
},
"accumulations": {
"conditionName": ["Error rate > 5%"],
"policyName": ["Production Alerts"],
"tag.environment": ["production"],
"tag.team": ["platform"]
},
"labelsObject": {
"environment": "production",
"team": "platform"
}
}

Map basic fields

Use Mustache templates:

title: "{{webhook.issueTitle}}"
message: |
New Relic Issue: {{webhook.issueTitle}}

State: {{webhook.state}}
Priority: {{webhook.priority}}
Entity: {{webhook.entitiesData.entities[0].name}}

View issue: {{webhook.issuePageUrl}}
severity: "{{webhook.priority}}"
source: "new-relic"
link: "{{webhook.issuePageUrl}}"
tags:
- "issue_id:{{webhook.issueId}}"
- "entity:{{webhook.entitiesData.entities[0].name}}"
- "entity_type:{{webhook.entitiesData.entities[0].type}}"
- "state:{{webhook.state}}"

Advanced field mapping with CEL

// Extract issue details
title: webhook.issueTitle
message: "New Relic Issue: " + webhook.issueTitle + "\n\n" +
"State: " + webhook.state + "\n" +
"Priority: " + webhook.priority + "\n" +
"Entity: " + (has(webhook.entitiesData.entities) && size(webhook.entitiesData.entities) > 0
? webhook.entitiesData.entities[0].name
: "Unknown") + "\n\n" +
"Violation Chart: " + webhook.violationChartUrl + "\n" +
"Issue URL: " + webhook.issuePageUrl

// Map New Relic priority to Harness severity
severity: webhook.priority == "CRITICAL" ? "critical" :
webhook.priority == "HIGH" ? "high" :
webhook.priority == "MEDIUM" ? "medium" : "low"

source: "new-relic"
link: webhook.issuePageUrl

// Extract all labels as tags
tags: has(webhook.labelsObject)
? webhook.labelsObject.keys().map(k, k + ":" + string(webhook.labelsObject[k]))
: ["issue_id:" + webhook.issueId]

// Filter: only activated and updated issues
filter: webhook.state in ["ACTIVATED", "CREATED"] ||
(webhook.state == "UPDATED" && webhook.priority in ["CRITICAL", "HIGH"])

custom_fields: {
"issue_id": webhook.issueId,
"entity_id": has(webhook.entitiesData.entities) && size(webhook.entitiesData.entities) > 0
? webhook.entitiesData.entities[0].id
: "",
"account_id": string(webhook.nrAccountId),
"violation_chart_url": webhook.violationChartUrl
}

Test the integration

Create test alert condition

Create a condition that fires immediately to confirm delivery:

  1. Go to Alerts & AI, then select Alert policies
  2. Create a test policy and condition that will fire immediately
  3. Assign the workflow to the policy

Trigger the condition

Wait for the condition to evaluate and create an issue.

Verify in New Relic

Confirm the issue was created and the notification was sent:

  1. Go to Alerts & AI, then select Issues & Activity
  2. Verify the issue was created
  3. Check Workflows to see notification sent

Verify in Harness

Confirm the issue arrived and mapped correctly:

  1. Navigate to Alerts in Harness AI SRE
  2. Check that the issue appears
  3. Verify field mapping is correct

Available New Relic fields

FieldDescriptionExample
idIssue IDissue-123
issueIdIssue ID (same as id)issue-123
issueTitleIssue titleHigh Error Rate on Application XYZ
issuePageUrlLink to issuehttps://one.newrelic.com/issues/...
priorityIssue priorityCRITICAL, HIGH, MEDIUM, LOW
stateIssue stateACTIVATED, ACKNOWLEDGED, CLOSED, UPDATED
triggerEventEvent typeSTATE_CHANGE, PRIORITY_CHANGED
createdAtCreation timestamp (ms)1625097600000
updatedAtLast update timestamp (ms)1625097600000
violationChartUrlChart image URLhttps://chart.googleapis.com/...
nrAccountIdNew Relic account ID12345
nrAccountNameAccount nameMy Company
entitiesData.entitiesAffected entities array[{id, name, type}]
accumulations.conditionNameCondition names["Error rate > 5%"]
accumulations.policyNamePolicy names["Production Alerts"]
labelsObjectKey-value labels{"environment": "production"}

Advanced configuration

Filter by priority

Create separate workflows for different priorities:

Critical issues:

  • Filter: priority is Critical
  • Channel: Harness Critical

High issues:

  • Filter: priority is High
  • Channel: Harness High

Filter by entity type

Route alerts based on entity type:

Application issues:

  • Filter: entitiesData.entities.type contains APPLICATION
  • Channel: Harness Applications

Infrastructure issues:

  • Filter: entitiesData.entities.type contains HOST
  • Channel: Harness Infrastructure

Enrich with NRQL queries

Add custom data to webhooks:

  1. In workflow Enrich data step
  2. Add NRQL enrichment
  3. Query:
SELECT average(duration), count(*)
FROM Transaction
WHERE appName = '{{ entitiesData.entities.[0].name }}'
SINCE 1 hour ago
  1. Reference in custom payload:
{
"issue_title": "{{ issueTitle }}",
"enrichment": "{{ nrql.[0].average }} ms avg duration"
}

Include chart images

Add visual context:

  1. In workflow Enrich data step
  2. Add Image enrichment
  3. Select chart or dashboard
  4. Reference in payload: {{ imageUrl }}

Troubleshooting

New Relic webhook is not sending notifications to Harness AI SRE

Test the destination from the Destinations page, verify the workflow is Active, check the workflow filters by removing them to test, and review the New Relic notification logs in the destination details.

New Relic alerts are not appearing in Harness AI SRE

Check the Harness webhook logs for errors, verify the payload structure in the New Relic destination test, temporarily remove the CEL filter to test, and ensure required fields such as issueTitle and priority exist.

New Relic is creating duplicate issues in Harness AI SRE

Review the workflow filters to avoid overlaps, use Harness alert routing rules to deduplicate by issue_id, and filter by triggerEvent to process only specific events.

Closed New Relic issues are not resolving in Harness AI SRE

Ensure the workflow sends notifications for 'Issue closed' events, and map the closed state in the Harness CEL severity mapping.


Example: complete integration

New Relic destination

Configure the destination with these settings:

  • Name: Harness AI SRE
  • Type: Webhook
  • URL: https://app.harness.io/gateway/ai-sre/api/webhooks/wh_abc123
  • Custom payload: Enabled (see custom payload tab above)

New Relic workflow

Configure the workflow with these settings:

  • Name: Critical & High Alerts to Harness
  • Filter:
    • Attribute: priority
    • Operator: is one of
    • Values: Critical, High
  • Enrich:
    • Add Image enrichment with violation chart
  • Notify: Harness AI SRE Channel
  • Status: Active

Map fields in the Harness webhook

title: "{{webhook.issueTitle}}"

message: |
**New Relic Issue**

**Title**: {{webhook.issueTitle}}
**Priority**: {{webhook.priority}}
**State**: {{webhook.state}}
**Entity**: {{webhook.entitiesData.entities[0].name}} ({{webhook.entitiesData.entities[0].type}})

**Conditions**: {{webhook.accumulations.conditionName[0]}}
**Policy**: {{webhook.accumulations.policyName[0]}}

**Account**: {{webhook.nrAccountName}} ({{webhook.nrAccountId}})
**Created**: {{webhook.createdAt}}
**Updated**: {{webhook.updatedAt}}

**View Issue**: {{webhook.issuePageUrl}}
**Violation Chart**: {{webhook.violationChartUrl}}

severity: |
webhook.state == "CLOSED" ? "info" :
webhook.priority == "CRITICAL" ? "critical" :
webhook.priority == "HIGH" ? "high" :
webhook.priority == "MEDIUM" ? "medium" : "low"

source: "new-relic"
link: "{{webhook.issuePageUrl}}"

tags:
- "source:new-relic"
- "issue_id:{{webhook.issueId}}"
- "priority:{{webhook.priority}}"
- "state:{{webhook.state}}"
- "entity:{{webhook.entitiesData.entities[0].name}}"
- "entity_type:{{webhook.entitiesData.entities[0].type}}"
- "account:{{webhook.nrAccountName}}"

filter: |
webhook.state in ["ACTIVATED", "CREATED", "UPDATED"] &&
webhook.priority in ["CRITICAL", "HIGH"]

custom_fields:
issue_id: "{{webhook.issueId}}"
entity_id: "{{webhook.entitiesData.entities[0].id}}"
account_id: "{{webhook.nrAccountId}}"
violation_chart_url: "{{webhook.violationChartUrl}}"
condition_names: "{{webhook.accumulations.conditionName}}"
policy_names: "{{webhook.accumulations.policyName}}"

Next steps


New Relic official documentation