Integrations

ServiceNow Zapier Integration Guide

beginnerBasic Authentication with ServiceNow user credentialsZapier

The ServiceNow Zapier integration enables automated workflows between ServiceNow and over 5,000 applications in the Zapier ecosystem, solving the critical business problem of manual data entry and disconnected business processes. This integration is primarily used by ITSM administrators, business analysts, and workflow automation specialists who need to streamline incident creation, automate record updates, and maintain data synchronization across multiple platforms. The integration supports bidirectional data flows through Zapier's webhook architecture and ServiceNow's REST API, with primary automation patterns including trigger-based incident creation, scheduled record synchronization, and event-driven updates. The integration leverages ServiceNow's REST Message framework and Connection & Credential Aliases stored in the System Web Services module, with optional Integration Hub spoke capabilities for advanced workflow orchestration.

Prerequisites

  • ServiceNow Orlando release or later with admin privileges
  • Zapier Premium or Professional account with multi-step Zap capabilities
  • ServiceNow REST API plugin activated (com.glide.rest.outbound)
  • ServiceNow user account with rest_service role and table-level access to target tables
  • Integration Hub Starter license or higher for advanced spoke-based workflows
  • Network connectivity allowing HTTPS traffic from Zapier IP ranges to ServiceNow instance
  • JSON Web Service plugin (com.glide.json) activated for webhook payload processing

Architecture Overview

The ServiceNow Zapier integration utilizes ServiceNow's native REST API endpoints exposed through the Table API, with authentication managed via Connection & Credential Aliases stored in the System Web Services module. Authentication is established using Basic Authentication with ServiceNow user credentials, stored securely in a Connection Alias record that Zapier references for all API calls. The data flow is primarily bidirectional, with Zapier sending webhook payloads to ServiceNow Scripted REST APIs for inbound automation and ServiceNow making outbound REST calls to Zapier webhooks for triggered actions. No MID Server is required as the integration operates entirely through HTTPS REST API calls over the public internet, though firewall rules may need adjustment for webhook delivery. Rate limiting follows ServiceNow's standard REST API quotas of 5,000 requests per hour per user, with Zapier implementing automatic retry logic and exponential backoff for failed requests.

Sourdough
Chrome Extension

Sourdough: ServiceNow Monitoring and Analytics

A Chrome extension for ServiceNow Admins and Developers with essential tools, analytics, graphs and monitoring features.

Instance HealthGraphs & ChartsAPI HealthDeveloper ToolsQuick SearchInstance Switcher
Add to Chrome

Free to install. Pro $5/month after a 14-day no-card trial.
Pro requires the ServiceNow admin role. Upgrade inside the extension.

Overview
Tasks
CMDB
API
Metrics
Monitor
Internals
Instance:sourdoughdev·Version:Yokohama
Instance StateONLINE
System StatusFully Operational
Session Timeout90 minutes
Logged-In Sessions2 (20 active)
Build Nameyokohama-12-18-2024_p1
IP Address10.159.128.43
Instance HealthHealth Score: 90%
🔥 5dSourdough (Chrome Plugin)Dark Mode

Implementation Steps

1

Create ServiceNow integration user and configure permissions

Navigate to User Administration > Users and create a new user account specifically for Zapier integration with username format like 'zapier.integration'. Assign the rest_service role to enable REST API access and grant appropriate table-level permissions (Create, Read, Update) to target tables like incident, change_request, or custom tables. Set a strong password and ensure the account is set to Active with no password expiration. This dedicated user approach provides better security auditing and prevents integration failures if personal accounts are deactivated.

2

Configure Connection and Credential Alias for Zapier authentication

Navigate to Connections & Credentials > Credentials and create a new Basic Auth credential record with name 'Zapier ServiceNow Connector'. Enter the integration user's username and password in the respective fields, then test the credential by clicking 'Test Credential'. Next, navigate to Connections & Credentials > Connection Aliases and create a new alias named 'zapier_connection' pointing to your ServiceNow instance URL. This centralized credential management allows for easy password rotation and provides audit trails for authentication events.

3

Install and configure Zapier ServiceNow app connection

Log into your Zapier account and navigate to My Apps, then search for and select the ServiceNow app from the available integrations. Click 'Connect a new account' and enter your ServiceNow instance URL (including https://), the integration user's username, and password when prompted. Zapier will perform a test API call to verify connectivity and permissions, displaying a green checkmark upon successful authentication. Save this connection with a descriptive name like 'Production ServiceNow Instance' to distinguish it from other potential ServiceNow connections in your Zapier account.

4

Create inbound webhook Scripted REST API for Zapier triggers

Navigate to System Web Services > Scripted REST APIs and create a new API with name 'Zapier Webhooks' and API ID 'zapier_inbound'. Create a new resource with HTTP method POST and relative path '/create_incident' to handle incident creation from external applications. Implement proper authentication checking and JSON payload validation in the resource script to ensure data integrity and security. Configure the resource to return appropriate HTTP status codes and response messages for successful processing and error conditions.

ServiceNow Script
(function process(request, response) {
    try {
        var body = request.body.data;
        var incident = new GlideRecord('incident');
        incident.initialize();
        incident.short_description = body.title || 'Incident from Zapier';
        incident.description = body.description || '';
        incident.caller_id = body.caller_sys_id || '';
        incident.urgency = body.urgency || '3';
        incident.impact = body.impact || '3';
        var sys_id = incident.insert();
        
        if (sys_id) {
            response.setStatus(201);
            response.setBody({success: true, sys_id: sys_id, number: incident.number.toString()});
        } else {
            response.setStatus(400);
            response.setBody({success: false, error: 'Failed to create incident'});
        }
    } catch (error) {
        response.setStatus(500);
        response.setBody({success: false, error: error.toString()});
    }
})(request, response);
5

Configure outbound REST message for ServiceNow to Zapier communication

Navigate to System Web Services > Outbound > REST Message and create a new REST Message named 'Zapier Webhook Sender' with endpoint URL placeholder for Zapier webhook URLs. Create HTTP methods for common operations like 'send_notification' and 'update_external_system' with appropriate headers including Content-Type application/json. Configure the REST message to use the Zapier connection alias created earlier for authentication if Zapier webhook requires authentication. Set up proper error handling and logging in the HTTP method scripts to track successful and failed webhook deliveries.

ServiceNow Script
var request = new sn_ws.RESTMessageV2('Zapier Webhook Sender', 'send_notification');
request.setEndpoint('https://hooks.zapier.com/hooks/catch/YOUR_WEBHOOK_ID/');
request.setRequestHeader('Content-Type', 'application/json');

var payload = {
    incident_number: current.number.toString(),
    state: current.state.getDisplayValue(),
    assigned_to: current.assigned_to.getDisplayValue(),
    short_description: current.short_description.toString(),
    sys_id: current.sys_id.toString()
};

request.setRequestBody(JSON.stringify(payload));
var response = request.execute();

if (response.getStatusCode() == 200) {
    gs.info('Zapier webhook sent successfully for incident: ' + current.number);
} else {
    gs.error('Failed to send Zapier webhook. Status: ' + response.getStatusCode() + ' Body: ' + response.getBody());
}
6

Build and configure your first Zap workflow

In Zapier, create a new Zap and select your trigger application (e.g., Gmail, Slack, or Jira) for the first step, configuring the specific trigger event like 'New Email' or 'New Issue Created'. Add ServiceNow as the action step, selecting 'Create Record' and choosing the incident table from the dropdown menu. Map the trigger data fields to ServiceNow incident fields using Zapier's field mapping interface, ensuring required fields like short_description are populated. Test the Zap with sample data to verify the integration creates records correctly and returns the expected ServiceNow incident number and sys_id.

7

Implement Business Rules for outbound Zapier notifications

Navigate to System Definition > Business Rules and create a new rule on the incident table with conditions for when to trigger Zapier webhooks (e.g., when state changes to Resolved or assigned_to changes). Configure the rule to run 'async' to prevent performance impact on user transactions and set appropriate filter conditions to avoid unnecessary webhook calls. In the script section, implement the REST message call to send relevant incident data to Zapier webhook URLs. Add proper error handling and logging to track webhook delivery success and failures for troubleshooting purposes.

ServiceNow Script
(function executeRule(current, previous /*null when async*/) {
    try {
        var request = new sn_ws.RESTMessageV2('Zapier Webhook Sender', 'send_notification');
        request.setEndpoint('https://hooks.zapier.com/hooks/catch/YOUR_WEBHOOK_ID/');
        
        var payload = {
            event_type: 'incident_updated',
            incident_number: current.number.toString(),
            state: current.state.getDisplayValue(),
            previous_state: previous ? previous.state.getDisplayValue() : '',
            assigned_to: current.assigned_to.getDisplayValue(),
            updated_by: current.sys_updated_by.toString(),
            update_timestamp: current.sys_updated_on.toString()
        };
        
        request.setRequestBody(JSON.stringify(payload));
        var response = request.execute();
        
        if (response.getStatusCode() != 200) {
            gs.error('Zapier webhook failed for incident ' + current.number + ': ' + response.getBody());
        }
    } catch (error) {
        gs.error('Error sending Zapier webhook: ' + error.toString());
    }
})(current, previous);
8

Test end-to-end integration and configure monitoring

Perform comprehensive testing by triggering your Zap from the source application and verifying that ServiceNow records are created with correct field mappings and data transformation. Test the reverse flow by updating ServiceNow records that should trigger outbound webhooks and confirm that Zapier receives the payloads correctly. Enable debug logging in ServiceNow by setting 'com.glide.rest.outbound' log level to 'Debug' to capture detailed REST API call information for troubleshooting. Set up monitoring by creating ServiceNow reports on REST API call success rates and configuring Zapier task history alerts to notify administrators of integration failures or quota exhaustion.

Common Use Cases

Automated incident creation from email systems

Configure Gmail or Outlook triggers to automatically create ServiceNow incidents when emails arrive at specific addresses or contain certain keywords. The integration maps email subject to short_description, email body to description, and sender information to caller_id fields. This eliminates manual ticket creation for support teams and ensures consistent incident formatting and classification. Business value includes reduced response times, improved SLA compliance, and elimination of human error in ticket creation processes.

Slack notification for critical incident updates

Set up ServiceNow business rules to send webhook notifications to Zapier when incident priority reaches P1 or state changes to Resolved, automatically posting formatted messages to designated Slack channels. The integration includes incident number, current assignee, and resolution details in the Slack message format. This keeps stakeholders informed without requiring them to monitor ServiceNow directly and enables rapid response team coordination. Business value includes improved communication transparency, faster escalation processes, and enhanced team collaboration during critical incidents.

Jira-ServiceNow bidirectional synchronization

Create automated workflows that synchronize development work items between Jira issues and ServiceNow change requests or incidents, maintaining consistent status updates across both platforms. When Jira issues are created, corresponding ServiceNow records are automatically generated with mapped priority, assignee, and description fields. Status changes in either system trigger updates in the other, ensuring development and operations teams have unified visibility. Business value includes reduced duplicate data entry, improved DevOps collaboration, and enhanced change management process compliance.

Customer portal integration for self-service requests

Connect external customer portals or websites to ServiceNow through Zapier webhooks, automatically creating service requests or incidents when customers submit forms or report issues. The integration maps customer information to caller fields, request details to description fields, and applies appropriate categorization based on form selections. This enables true self-service capabilities without requiring customers to access ServiceNow directly. Business value includes reduced call center volume, improved customer satisfaction through faster request processing, and better request categorization accuracy.

Asset management updates from procurement systems

Automate asset record creation and updates in ServiceNow when new equipment is ordered or received in procurement platforms like SAP Ariba or Oracle Purchasing. The integration creates new Configuration Item records with proper classification, assigns them to the requesting user, and updates asset status throughout the procurement lifecycle. Purchase order numbers, serial numbers, and vendor information are automatically populated in ServiceNow asset records. Business value includes accurate asset inventory management, improved procurement visibility, and automated compliance reporting for asset tracking requirements.

Troubleshooting

401 Unauthorized error when Zapier attempts to create ServiceNow records

First check that the integration user account is active and the password hasn't expired by navigating to User Administration > Users and verifying the account status. Review the user's role assignments to ensure the rest_service role is present and verify table-level ACLs allow the user to create records on target tables. Check the Zapier connection configuration to ensure the correct username, password, and instance URL are configured. Test the credentials manually using a REST client like Postman to isolate whether the issue is with ServiceNow permissions or Zapier configuration.

ServiceNow outbound webhooks to Zapier returning timeout or connection errors

Verify that your ServiceNow instance can reach Zapier's webhook URLs by testing the REST message manually from System Web Services > Outbound > REST Message. Check the ServiceNow outbound HTTP logs under System Logs > System Log > Outbound HTTP Requests for detailed error messages and response codes. Ensure that any corporate firewalls or proxy servers allow HTTPS traffic to Zapier's hook domains (hooks.zapier.com). If using a MID Server environment, verify that the MID Server has proper internet connectivity and isn't being blocked by network security policies.

Zapier receives ServiceNow webhook but record creation fails with field validation errors

Review the Zapier task history to identify which specific ServiceNow fields are causing validation failures, often related to mandatory fields, field length limits, or choice field value mismatches. Check ServiceNow's dictionary for the target table to verify field requirements, maximum lengths, and valid choice values for dropdown fields. Modify your Zapier field mapping to include default values for required fields and implement data transformation steps to ensure field values match ServiceNow's expected format. Test the webhook payload structure using ServiceNow's REST API Explorer to validate field mappings before deploying the Zap.

Duplicate records being created when Zapier triggers fire multiple times

Implement deduplication logic in your ServiceNow Scripted REST API by checking for existing records based on unique identifiers like external system IDs or email addresses before creating new records. Add a custom field to store the external system's unique identifier and query against this field in your webhook processing script. Configure Zapier's built-in deduplication settings in the Zap editor to prevent multiple triggers from the same source event within a specified time window. Review your trigger application's webhook settings to ensure it's not configured to send duplicate notifications for the same event.

Zapier Zap stops working after reaching task limit or quota exhaustion

Monitor your Zapier account's task usage dashboard to identify which Zaps are consuming the most tasks and optimize them by adding filters to reduce unnecessary triggers or consolidating multiple single-action Zaps into multi-step workflows. Review your ServiceNow business rule conditions to ensure they're not triggering webhooks for every record update, and add more specific filter conditions to only send webhooks when meaningful changes occur. Implement error handling in your ServiceNow webhook scripts to retry failed requests with exponential backoff rather than immediately consuming additional Zapier tasks. Consider upgrading your Zapier plan or implementing direct API integrations for high-volume data synchronization scenarios.

ServiceNow table API returns unexpected field values or missing data in Zapier

Check ServiceNow's REST API response format by testing the same API call directly through the REST API Explorer to compare field values and identify any data transformation issues. Verify that choice fields are being returned as display values rather than internal key values by adjusting the 'sysparm_display_value' parameter in your API calls. Review ACL restrictions on the target table to ensure the integration user has read access to all fields being requested by Zapier. Update your Zapier field mappings to handle null or empty values gracefully and implement data validation steps to catch formatting issues before they cause downstream processing errors.

Pro Tips

  • Implement custom logging tables in ServiceNow to track all Zapier integration events including successful record creations, failed webhook deliveries, and data transformation errors, enabling better troubleshooting and performance monitoring. Create a dedicated 'Integration Logs' table with fields for timestamp, direction (inbound/outbound), external system, record type, success status, and error details for comprehensive audit trails.
  • Use ServiceNow's Transform Maps feature for complex data mapping scenarios where Zapier's built-in field mapping isn't sufficient, particularly when integrating with systems that have vastly different data structures or require extensive data cleansing. This approach provides more robust error handling and allows for advanced data validation rules that execute server-side in ServiceNow.
  • Configure Zapier webhook URLs with authentication tokens or API keys when possible to prevent unauthorized webhook submissions to your ServiceNow instance, and implement IP address filtering in ServiceNow to only accept webhooks from verified Zapier IP ranges. Store webhook authentication secrets in ServiceNow's encrypted credential store for additional security.
  • Leverage ServiceNow's Event Management module to create custom events for Zapier integration milestones, enabling automated notifications to administrators when integration volumes exceed thresholds or error rates spike above acceptable levels. This proactive monitoring prevents small issues from becoming major integration failures.
  • Implement batch processing capabilities in your ServiceNow Scripted REST APIs to handle high-volume scenarios where Zapier needs to send multiple records in a single webhook call, reducing API call overhead and improving overall integration performance. Use GlideRecord batch operations and proper transaction handling to ensure data consistency.
  • Create reusable REST message templates and Scripted REST API resources that can be easily cloned and customized for different Zapier integration scenarios, following consistent naming conventions and error handling patterns to reduce development time and improve maintainability across multiple integrations.

Known Limitations

  • Zapier's ServiceNow connector does not support attachment file transfers, requiring separate file handling workflows through ServiceNow's Attachment API or third-party file storage services like Google Drive or Dropbox as intermediaries. Complex file-based integrations may require custom ServiceNow applications or direct API development.
  • The integration is limited by ServiceNow's standard REST API rate limits of 5,000 requests per hour per user, which can be restrictive for high-volume automated workflows or bulk data synchronization scenarios. Organizations requiring higher throughput should consider Integration Hub Professional licenses or direct database integration approaches.
  • Zapier's webhook delivery is not guaranteed and follows an eventual consistency model with automatic retries, meaning time-sensitive integrations may experience delays of several minutes during Zapier system maintenance or high load periods. Critical real-time integrations should implement direct API calls or ServiceNow's native integration capabilities.
  • Complex ServiceNow workflows involving multiple approval stages, advanced business rule logic, or custom UI policies may not translate effectively through Zapier's simplified trigger-action model, requiring careful workflow design or hybrid integration approaches that combine Zapier automation with ServiceNow's native orchestration capabilities.
  • ServiceNow reference field lookups through Zapier require explicit sys_id values rather than display names, necessitating additional lookup steps or data transformation logic to resolve human-readable values to ServiceNow's internal identifiers, which can complicate integration workflows and increase task consumption.

Frequently Asked Questions

Can Zapier handle ServiceNow workflow approvals and multi-stage processes?

Zapier can trigger initial workflow steps and monitor approval status changes through ServiceNow's REST API, but it cannot directly participate in ServiceNow's approval engine or workflow activities. For complex approval workflows, configure Zapier to create records with appropriate approval states and let ServiceNow's native workflow engine handle the approval process. You can then use additional Zaps to react to approval completions or rejections by monitoring the approval_history table or approval state field changes.

How do I handle ServiceNow choice field values when mapping data from external systems?

ServiceNow choice fields require exact matches to predefined values, so implement data transformation in Zapier using Formatter or Code steps to map external system values to valid ServiceNow choices. Create lookup tables or use switch/case logic to translate values like 'High Priority' to '1' for ServiceNow urgency fields. For dynamic choice lists, query ServiceNow's sys_choice table through the REST API to retrieve current valid values and implement fallback logic for unmapped values, typically setting a default choice value to prevent record creation failures.

Is it possible to sync ServiceNow catalog requests and approvals with external procurement systems?

Yes, but it requires careful workflow design since catalog requests involve complex ServiceNow processes including approvals, fulfillment tasks, and state transitions. Configure Zapier to monitor requested item (sc_req_item) table changes rather than just the parent request record, and map relevant fields like quantity, price, and vendor information to external procurement systems. For approval synchronization, create webhooks that trigger when approval states change and update corresponding purchase requisitions in external systems. Consider using ServiceNow's Flow Designer for complex catalog integrations that require multiple system interactions.

What's the best practice for handling large datasets when integrating ServiceNow with other systems through Zapier?

Break large datasets into smaller chunks using Zapier's pagination features and ServiceNow's REST API query parameters like sysparm_limit and sysparm_offset for batch processing. Implement time-based synchronization by using sys_updated_on fields to sync only records modified since the last integration run, reducing data volume and API calls. For initial data loads or bulk operations, consider using ServiceNow's Import Sets with CSV files stored in shared locations like Google Drive, triggering import processing through Zapier while handling the heavy data lifting within ServiceNow's native capabilities.

Can I use Zapier to integrate ServiceNow with on-premises applications behind firewalls?

Direct integration with on-premises applications requires those systems to have internet-accessible APIs or webhook endpoints, which may not be feasible for security reasons. Consider using ServiceNow's MID Server as an integration bridge, where Zapier interacts with ServiceNow and the MID Server handles communication with on-premises systems. Alternatively, implement a hybrid approach where Zapier manages cloud-to-cloud integrations and ServiceNow's Integration Hub handles on-premises connectivity through MID Servers. For highly secure environments, direct API integrations may be more appropriate than Zapier's cloud-based approach.

How do I prevent duplicate record creation when multiple Zapier triggers fire simultaneously?

Implement server-side deduplication logic in your ServiceNow Scripted REST APIs by querying for existing records based on unique external identifiers before creating new ones. Use ServiceNow's setWorkflow(false) method to prevent business rules from triggering multiple times during record creation, and consider implementing advisory locking using ServiceNow's GlideSemaphore class for high-concurrency scenarios. In Zapier, configure appropriate trigger filters and use delay actions to batch multiple related events into single processing cycles. Store external system unique identifiers in custom ServiceNow fields to enable reliable duplicate detection across integration runs.

What ServiceNow licensing considerations apply when using Zapier integrations?

Zapier integrations consume ServiceNow user licenses for the dedicated integration user account, typically requiring at least an ITIL user license for basic table access or ESS licenses for limited functionality. REST API calls count against ServiceNow's API usage quotas, but don't require additional API-specific licensing in most ServiceNow subscription models. If using Integration Hub spokes or Flow Designer for advanced integration scenarios, ensure you have appropriate Integration Hub licenses (Starter, Standard, or Professional) based on your automation complexity requirements. Monitor your ServiceNow usage metrics to ensure integration activities don't push you over subscription limits for API calls or data storage.

Test Your Knowledge

Quick 3-question quiz — see how your ServiceNow skills stack up.

Question 1 of 3Performance

A list view on a table with millions of records is slow. Best fix?

Select an answer to continue