Web Services and SuiteTalk
NetSuite Unknown
2026-07-25

Sales Campaign Record Now Exposed via SuiteTalk REST API

The salescampaign record type is now available through REST web services, supporting CRUD operations including campaign events, email, drip, and direct mail sublists.

Affects:SuiteTalk REST APIREST API Browser/services/rest/record/v1/salescampaign

What changed

The Sales Campaign record (record ID: salescampaign) is now exposed through SuiteTalk REST web services at /services/rest/record/v1/salescampaign. Previously only available through the UI and SuiteScript, this record can now be created, read, updated, and deleted via REST.

Supported sublists and subrecords

The REST representation includes the following subrecords and sublists:

  • audience
  • category
  • family
  • offer
  • owner / ownerRole
  • promotionCode
  • searchEngine
  • vertical

Campaign event sublists

The record supports four campaign event sublists, each accepting items with campaignGroup, channel, cost, dateScheduled, description, promoCode, status, subscription, and template fields:

  • campaignDirectMail
  • campaignDrip
  • campaignEmail (also supports timeScheduled)
  • campaignEvent

Read-only fields

The following Statistics-tab fields are computed server-side and cannot be set via REST:

  • totalRevenue, roi, profit, costPerCustomer, convCostPerCustomer, conversions, leadsGenerated, uniqueVisitors

The campaignId field and defaultEvent sublist are also read-only, auto-generated on record creation. The Cost field is computed from associated event costs.

PATCH endpoint note

The PATCH code sample in Oracle's documentation uses /services/rest/record/v1/campaign/1 rather than /services/rest/record/v1/salescampaign/1. This appears to be a documentation error — the record ID is salescampaign, so use /services/rest/record/v1/salescampaign/{id} for updates. Verify in the REST API Browser before relying on the sample.

Prerequisites

The following features must be enabled before the record is available via REST:

  • Marketing Automation — required
  • Sales Campaigns — required
  • Promotion Codes — needed for promotionCode fields
  • Subscription Categories — needed for subscription fields
  • Mail Merge — needed for template-related fields

What to do

  1. Check feature flags. Navigate to Setup > Company > Enable Features and confirm Marketing Automation, Sales Campaigns, and any optional features (Promotion Codes, Subscription Categories, Mail Merge) are enabled before calling the endpoint.
  2. Review the REST API Browser. Open the REST API Browser in your account and look up the salescampaign record to confirm available fields, sublists, and supported HTTP methods for your account's version.
  3. Use the correct endpoint path. The record ID is salescampaign. POST and PATCH requests go to /services/rest/record/v1/salescampaign and /services/rest/record/v1/salescampaign/{id} respectively. Do not use /services/rest/record/v1/campaign despite the PATCH sample suggesting otherwise.
  4. Handle read-only fields defensively. Do not attempt to set computed fields (totalRevenue, roi, profit, etc.) on POST or PATCH — they will likely be ignored or cause an error.
  5. Migrate existing integrations. If you currently create or update sales campaigns via SuiteTalk SOAP or SuiteScript MapReduce, evaluate whether REST is a better fit. REST provides a cleaner JSON interface for campaign event sublists compared to SOAP's XML.