Customers often ask how to better control their consumption. This comes up especially in smaller POC projects, where teams are extra cautious about going over budget and want stronger levers to pause or manage usage. Digital Wallet provides threshold alerts, an out-of-the-box Flow that can be configured to notify an org’s admin when credit usage approaches a set level. With Flow and Connect APIs, you can even pause processes like data streams or calculated insights when an alert is triggered, ensuring that your credit consumption stays within your comfort zone.
Digital Wallet Threshold Alerts
Digital Wallet’s Consumption Threshold Alerts is a ready-to-use Flow that sends a notification when usage on a consumption card hits a limit that you define.
You can set percentage-based limits across all of your consumption cards, or for specific cards. Your threshold alerts are sent in-app and via email, but you can also opt to send them to Slack or your computer desktop. Threshold alerts keep your team informed before usage reaches critical levels.
Details about configuring the Consumption Threshold Alerts Flow are available here.

Create a Flow to Pause Data 360 Processes
Your threshold alerts don’t have to stop at notifications: you can create a Flow to directly take action. The same mechanism that triggers a threshold alert can also make Connect API calls to update process schedules. You can pause schedules, change processing frequency, and make other changes to stop or reduce consumption.
Stop or reduce consumption with changes such as:
- Pausing data ingestion by changing a data stream’s schedule from
HourlytoNo Schedule. - Stopping a data transform from running by changing its frequency to
None. - Reduce a calculated insight’s run frequency from hourly to daily by changing its publish schedule interval from
OnetoTwentyFour.
These six Connect API endpoints can be used to pause or slow down Data 360 processes on five supported process definition features:
Set up a Flow to Pause a Specific Calculated Insight
Let’s look at a Flow that pauses the Account Score calculated insight. With this Flow, the calculated insight won’t run unless it’s called manually or by another process.
To stop the calculated insight, we need to change the schedule to No Schedule. We’ll also need to update the insight’s start time and end time, which are required to be null values when a schedule isn’t set.
The below flow uses a flow action which uses a HTTP call out to identify the specific calulated insight we’re updating by its API name, Account_Score__cio. If you’re updating a different type of process, you can find the HTTP string for that process in the table above.

Assign New Schedule Values
Now that we’ve told Flow that we’re updating the Account Score calculated insight, we’ll add an Assignment element to the Flow to change the publish schedule.
To stop publishing the Account Score, we change the publishScheduleInternval variable to NotScheduled and the publishScheduleEndDate and publishScheduleStartDateTime variables to null.

If you want to reduce the publish frequency instead of stopping publishing entirely, you can change the publishScheduleInterval to any of the other valid values listed in the Connect API endpoint documentation without changing the start or end dates. Other valid values are:
- ExternallyManaged
- One
- Six
- Streaming
- SystemManaged
- Twelve
- TwentyFour
Use Apex to Pause Processes
You can use an Apex class to stop consumption for a list of features, such as specific calculated insights, or for all features of a type, such as all calculated insights.
Example Scenario
- Define a threshold – 70%.
- Instead of just sending a notification, or in addition to, the Flow invokes a Connect API call.
- The API updates the schedule of the targeted process (data stream, calculated insight, etc.) to no schedule, effectively pausing it.
The following Apex Class is an example to stop usage consumption for a list of calculated insights. If you wanted to use this class to pause all calculated insights in your org, you could write another Apex class to get the API names of all your CIs to pass to this Apex class.
public with sharing class pauseCalculatedInsights {
public class Request {
@InvocableVariable(required=true)
public List<String> apiNames; // list of CI API names to update
}
public class Response {
@InvocableVariable public String apiName;
@InvocableVariable public Integer statusCode;
@InvocableVariable public String body;
@InvocableVariable public String message;
}
@InvocableMethod(label='PATCH CI (Bulk)' description='Update Calculated Insight Schedule via Connect API')
public static List<Response> patchCI(List<Request> requests) {
List<Response> results = new List<Response>();
Http http = new Http();
// 👇 Fixed JSON body
String bodyJson = '{' +
'"publishScheduleInterval":"NotScheduled",' +
'"publishScheduleEndDate":null,' +
'"publishScheduleStartDateTime":null' +
'}';
for (Request r : requests) {
if (r.apiNames == null) continue;
for (String apiName : r.apiNames) {
Response res = new Response();
try {
String path = '/services/data/v60.0/ssot/calculated-insights/' +
EncodingUtil.urlEncode(apiName, 'UTF-8');
HttpRequest req = new HttpRequest();
// 👉 replace with your Named Credential name
req.setEndpoint('callout:Invxxable_Actions' + path);
req.setMethod('PATCH');
req.setHeader('Content-Type','application/json');
req.setHeader('Accept','application/json');
req.setBody(bodyJson);
HttpResponse httpRes = http.send(req);
res.apiName = apiName;
res.statusCode = httpRes.getStatusCode();
res.body = httpRes.getBody();
res.message = (res.statusCode >= 200 && res.statusCode < 300)
? 'PATCH success for ' + apiName
: 'PATCH failed (HTTP ' + res.statusCode + ') for ' + apiName;
} catch (Exception e) {
res.apiName = apiName;
res.statusCode = 500;
res.message = 'Exception: ' + e.getMessage();
}
results.add(res);
}
}
return results;
}
}
Create a Flow to Change Permission Sets
You can only change schedules on the five supported features listed above. You can’t use it to stop live access like queries. However, if you need stop more processes from running, you can use a Flow to remove permission sets from users to prevent them from creating consumption-generating processes.
This is a more extreme and reactive way to manage costs, and you’ll want to take a careful look at users’ access needs before implementing it. A blanket change to permissions could have unexpected downstream impacts that distrupt operations, especially in a complex org with many clouds and a lot of features that rely on Data 360.
This solution is best employed as just one layer of response to credit consumption. The smoothest management always comes when an admin if notified and can decide on a course of action before a crisis occurs. For example, you might set up several layers of response to increasing usage, such as
- Set up alerts sent to admins at 75% credit usage so they can make intentional adjustments to unexpected usage
- Create a Flow + Apex class to reschedule or stop processes by updating certain process definitions at 85%
- On top of pausing most usage, prevent furture consumption by removing permission sets to your users when your credit usage hits 90%.
Summary
Many organizations want a “STOP!” button automatically pressed when their credit consumption gets high. Digital Wallet provides alerts, but doesn’t provide an out-of-box way to stop consumption. However, you can use Flow, Apex, and Connect API to change or stop schedules for process definitions like data streams, identity resolution, and calculated insights to slow down or turn off processing on specific definitions. If just reducing existing usage isn’t enough, you can go a step further and remove user access by removing the perm set assignment. Ultimately, a multi-layered system that combines alerts with automations is the most effective way to ensure visiblity into and control of your credit consumption in Data 360.
Can’t you use an external service instead of apex?
Maybe if you expose this apex class as a webservice ?