Salesforce Use case · Service · Case

Tell customers where their case stands, without anyone remembering to.

One pattern moves every case through the same three messages: we have it, we are working on it, it is done. Salesforce owns when each fires, so the update does not depend on which agent picked up the ticket.

ObjectCase
Fires onCreated, and on named Status transitions
Reply landsComment and Task on the same Case
ChannelSMS or WhatsApp, by contact preference
01 · What quietly breaks

"We will keep you updated" is a promise made by nobody in particular.

The status changes on the Case and no message goes out. Some agents send a quick note, others do not, and which you get depends on who opened your ticket. Quiet hours, consent and language are each handled by memory.

The cost lands in the queue. Customers who were not told anything write in to ask, so the team handles the same case twice, and every update is typed from scratch because there is no standard wording to reach for.

Then somebody escalates, and there is no trail showing what the customer was told and when. That conversation is much harder than the original fault.

02 · The idea

Acknowledge, progress, resolution. Three moments, driven by Case events rather than by agents, with one shared set of guardrails in front of all three.

03 · The pattern

Three tracks, on the Case you already have.

Case is the system of record for status, priority, owner and SLA. Each track is a record-triggered flow that calls the same guardrail subflow, then sends, then stamps a field so nothing fires twice.

01

Acknowledge: confirm the case exists

Fires when the Case is created from a channel where messaging is allowed. It sends the case number and one line about what happens next, and it invites a reply, because the extra detail a customer adds in the first hour is usually the detail that solves the case.

The flow stamps First_Status_Notification_Sent__c, which is also what tells you later how many cases got one.

In Salesforce Flow typeRecord-triggered, Case, created, after saveTemplateCase_AcknowledgeMerge fieldsCase.CaseNumber, Contact.FirstNameStampsFirst_Status_Notification_Sent__c
02

Progress: update on the transitions that matter

Not every field change deserves a message. Pick a small set of transitions and write one template each: assigned and under investigation, waiting on the customer, on hold behind a third party.

Keeping the set small is the whole discipline. A message per status change teaches customers to ignore the channel, which costs you the one that matters.

In Salesforce TriggerStatus changed, After SaveTransitionsNew → In Progress, In Progress → Waiting on Customer, In Progress → On HoldTemplatesCase_Assigned, Case_Waiting, Case_On_HoldSkipsAny transition not in the list
03

Resolution: close the loop, and ask

On close, one message confirming what was done and how to reopen. It is also the natural place for a one-question survey, because the customer is already in a thread they trust.

A reply after close reopens the case rather than starting a new one, so the history stays in one place.

In Salesforce TriggerStatus → ClosedTemplateCase_ResolvedReply windowInbound within 7 days reopens the CaseOptionalOne-question CSAT, answer written to the Case
Fig 01 · 00001842 · Priya Raman
We have your request (Case 00001842). Our team will review it and update you here. You can reply to this message with anything else that helps.
Sent 08:41 · from Flow · template Case_Acknowledge
The serial number is on the base, HX-4471. It started after the last firmware update.
Received 09:02 · Case Comment · Task on Contact
Thank you, that is on the case now. We are waiting on the firmware team and will update you as soon as we hear.
Sent 11:20 · from Flow · template Case_On_Hold
04 · Replies and exceptions

A reply belongs on the case, not in an inbox.

Every inbound message is written to the Case as a comment and raises a Task for the case owner, so the context is already attached when they open it.

ReplyWhat happensWhere it lands
Extra detail Written to the Case as a comment and raised as a Task for the owner. No status change: a human decides what the detail means. Case Comment, Task
"Any update?" Nothing automatic. It shows the acknowledgement or the progress message did not land, and it is worth counting. Task on Case
Reply after close Reopens the Case within the reply window and keeps the whole thread. Outside it, a new Case is created and linked. Case.Status, Parent Case
STOP Opt-out on the Contact. Status messages stop for every case, current and future. Contact.SMS_Opt_Out__c
05 · Guardrails

One subflow in front of all three tracks.

ConsentContactPointConsent is checked once, in the shared subflow, rather than three times in three flows that will drift apart.
Quiet hoursA case closed at 23:40 does not text anyone at 23:40. The message queues to the next allowed hour in the contact's region.
One per transitionEach track stamps its own field. A case that bounces between two statuses does not send the same update four times.
Channel and languageRead off the Contact. Where neither is set the case routes to a triage queue rather than guessing.
06 · Reporting afterwards

"How well do we keep people informed" becomes answerable.

Because each track stamps a field, coverage is a report rather than an impression. Group by team and the gaps show up as a column, not as a complaint.

Support · status coverageCases
TeamCasesAcknowledged"Any update?"
Tier 11,20498%41
Tier 238694%37
Field21288%29
Billing14497%6
ACKNOWLEDGEDCases with First_Status_Notification_Sent__c set, over all cases created. Below 100% means a channel or a consent gap, and the report says which.
"ANY UPDATE?"Inbound messages matching the chaser keywords. It falls as coverage rises, and it is the number that shows the pattern paying for itself.
BEFORE SLACases with a progress message sent before the SLA milestone. The question managers actually ask.
07 · Implementation note

Where ValueText fits.

ValueText is the send action and the inbound handler. It adds the Send Message invocable action to Flow Builder, writes every inbound message to the Case as a comment and a Task, and keeps the whole thread on the record in the Converse view. Templates, keyword rules and the org-level send window live in ValueText Setup. The three flows, the stamp fields, the guardrail subflow and the report are yours and stay if you leave.

Professional edition or above · Works with standard Case status, no Service Cloud milestone required · 1 SMS segment per update at the published per-country rate
AppExchange review

“The new features have made it very easy for our business to communicate with patients and improve their journey experience.”

Charles Lucas Charles LucasSalesforce Lead · AppExchange
This page sits underSMS for SalesforceThe channel page: how sending, receiving and billing work for SMS.
In the docs
01 Sending Messages from Flow in SalesforceThe invocable action, its inputs and the test run → 02 Log Chat Conversations to Activity HistoryKeeping the thread on the Case for an audit → 03 Opt-Out and Opt-In Management in SalesforceWhere the opt-out lives and what honours it →

Run your messaging inside your CRM.

Rated 4.98 on Salesforce AppExchange
Salesforce Use case · Service · Case

Tell customers where their case stands, without anyone remembering to.

One pattern moves every case through the same three messages: we have it, we are working on it, it is done. Salesforce owns when each fires, so the update does not depend on which agent picked up the ticket.

ObjectCase
Fires onCreated, and on named Status transitions
Reply landsComment and Task on the same Case
ChannelSMS or WhatsApp, by contact preference
01 · What quietly breaks

"We will keep you updated" is a promise made by nobody in particular.

The status changes on the Case and no message goes out. Some agents send a quick note, others do not, and which you get depends on who opened your ticket. Quiet hours, consent and language are each handled by memory.

The cost lands in the queue. Customers who were not told anything write in to ask, so the team handles the same case twice, and every update is typed from scratch because there is no standard wording to reach for.

Then somebody escalates, and there is no trail showing what the customer was told and when. That conversation is much harder than the original fault.

02 · The idea

Acknowledge, progress, resolution. Three moments, driven by Case events rather than by agents, with one shared set of guardrails in front of all three.

03 · The pattern

Three tracks, on the Case you already have.

Case is the system of record for status, priority, owner and SLA. Each track is a record-triggered flow that calls the same guardrail subflow, then sends, then stamps a field so nothing fires twice.

01

Acknowledge: confirm the case exists

Fires when the Case is created from a channel where messaging is allowed. It sends the case number and one line about what happens next, and it invites a reply, because the extra detail a customer adds in the first hour is usually the detail that solves the case.

The flow stamps First_Status_Notification_Sent__c, which is also what tells you later how many cases got one.

In Salesforce Flow typeRecord-triggered, Case, created, after saveTemplateCase_AcknowledgeMerge fieldsCase.CaseNumber, Contact.FirstNameStampsFirst_Status_Notification_Sent__c
02

Progress: update on the transitions that matter

Not every field change deserves a message. Pick a small set of transitions and write one template each: assigned and under investigation, waiting on the customer, on hold behind a third party.

Keeping the set small is the whole discipline. A message per status change teaches customers to ignore the channel, which costs you the one that matters.

In Salesforce TriggerStatus changed, After SaveTransitionsNew → In Progress, In Progress → Waiting on Customer, In Progress → On HoldTemplatesCase_Assigned, Case_Waiting, Case_On_HoldSkipsAny transition not in the list
03

Resolution: close the loop, and ask

On close, one message confirming what was done and how to reopen. It is also the natural place for a one-question survey, because the customer is already in a thread they trust.

A reply after close reopens the case rather than starting a new one, so the history stays in one place.

In Salesforce TriggerStatus → ClosedTemplateCase_ResolvedReply windowInbound within 7 days reopens the CaseOptionalOne-question CSAT, answer written to the Case
Fig 01 · 00001842 · Priya Raman
We have your request (Case 00001842). Our team will review it and update you here. You can reply to this message with anything else that helps.
Sent 08:41 · from Flow · template Case_Acknowledge
The serial number is on the base, HX-4471. It started after the last firmware update.
Received 09:02 · Case Comment · Task on Contact
Thank you, that is on the case now. We are waiting on the firmware team and will update you as soon as we hear.
Sent 11:20 · from Flow · template Case_On_Hold
04 · Replies and exceptions

A reply belongs on the case, not in an inbox.

Every inbound message is written to the Case as a comment and raises a Task for the case owner, so the context is already attached when they open it.

ReplyWhat happensWhere it lands
Extra detail Written to the Case as a comment and raised as a Task for the owner. No status change: a human decides what the detail means. Case Comment, Task
"Any update?" Nothing automatic. It shows the acknowledgement or the progress message did not land, and it is worth counting. Task on Case
Reply after close Reopens the Case within the reply window and keeps the whole thread. Outside it, a new Case is created and linked. Case.Status, Parent Case
STOP Opt-out on the Contact. Status messages stop for every case, current and future. Contact.SMS_Opt_Out__c
05 · Guardrails

One subflow in front of all three tracks.

ConsentContactPointConsent is checked once, in the shared subflow, rather than three times in three flows that will drift apart.
Quiet hoursA case closed at 23:40 does not text anyone at 23:40. The message queues to the next allowed hour in the contact's region.
One per transitionEach track stamps its own field. A case that bounces between two statuses does not send the same update four times.
Channel and languageRead off the Contact. Where neither is set the case routes to a triage queue rather than guessing.
06 · Reporting afterwards

"How well do we keep people informed" becomes answerable.

Because each track stamps a field, coverage is a report rather than an impression. Group by team and the gaps show up as a column, not as a complaint.

Support · status coverageCases
TeamCasesAcknowledged"Any update?"
Tier 11,20498%41
Tier 238694%37
Field21288%29
Billing14497%6
ACKNOWLEDGEDCases with First_Status_Notification_Sent__c set, over all cases created. Below 100% means a channel or a consent gap, and the report says which.
"ANY UPDATE?"Inbound messages matching the chaser keywords. It falls as coverage rises, and it is the number that shows the pattern paying for itself.
BEFORE SLACases with a progress message sent before the SLA milestone. The question managers actually ask.
07 · Implementation note

Where ValueText fits.

ValueText is the send action and the inbound handler. It adds the Send Message invocable action to Flow Builder, writes every inbound message to the Case as a comment and a Task, and keeps the whole thread on the record in the Converse view. Templates, keyword rules and the org-level send window live in ValueText Setup. The three flows, the stamp fields, the guardrail subflow and the report are yours and stay if you leave.

Professional edition or above · Works with standard Case status, no Service Cloud milestone required · 1 SMS segment per update at the published per-country rate
AppExchange review

“The new features have made it very easy for our business to communicate with patients and improve their journey experience.”

Charles Lucas Charles LucasSalesforce Lead · AppExchange
This page sits underSMS for SalesforceThe channel page: how sending, receiving and billing work for SMS.
In the docs
01 Sending Messages from Flow in SalesforceThe invocable action, its inputs and the test run → 02 Log Chat Conversations to Activity HistoryKeeping the thread on the Case for an audit → 03 Opt-Out and Opt-In Management in SalesforceWhere the opt-out lives and what honours it →

Run your messaging inside your CRM.

Rated 4.98 on Salesforce AppExchange
Salesforce Use case · Service · Case

Tell customers where their case stands, without anyone remembering to.

One pattern moves every case through the same three messages: we have it, we are working on it, it is done. Salesforce owns when each fires, so the update does not depend on which agent picked up the ticket.

ObjectCase
Fires onCreated, and on named Status transitions
Reply landsComment and Task on the same Case
ChannelSMS or WhatsApp, by contact preference
01 · What quietly breaks

"We will keep you updated" is a promise made by nobody in particular.

The status changes on the Case and no message goes out. Some agents send a quick note, others do not, and which you get depends on who opened your ticket. Quiet hours, consent and language are each handled by memory.

The cost lands in the queue. Customers who were not told anything write in to ask, so the team handles the same case twice, and every update is typed from scratch because there is no standard wording to reach for.

Then somebody escalates, and there is no trail showing what the customer was told and when. That conversation is much harder than the original fault.

02 · The idea

Acknowledge, progress, resolution. Three moments, driven by Case events rather than by agents, with one shared set of guardrails in front of all three.

03 · The pattern

Three tracks, on the Case you already have.

Case is the system of record for status, priority, owner and SLA. Each track is a record-triggered flow that calls the same guardrail subflow, then sends, then stamps a field so nothing fires twice.

01

Acknowledge: confirm the case exists

Fires when the Case is created from a channel where messaging is allowed. It sends the case number and one line about what happens next, and it invites a reply, because the extra detail a customer adds in the first hour is usually the detail that solves the case.

The flow stamps First_Status_Notification_Sent__c, which is also what tells you later how many cases got one.

In Salesforce Flow typeRecord-triggered, Case, created, after saveTemplateCase_AcknowledgeMerge fieldsCase.CaseNumber, Contact.FirstNameStampsFirst_Status_Notification_Sent__c
02

Progress: update on the transitions that matter

Not every field change deserves a message. Pick a small set of transitions and write one template each: assigned and under investigation, waiting on the customer, on hold behind a third party.

Keeping the set small is the whole discipline. A message per status change teaches customers to ignore the channel, which costs you the one that matters.

In Salesforce TriggerStatus changed, After SaveTransitionsNew → In Progress, In Progress → Waiting on Customer, In Progress → On HoldTemplatesCase_Assigned, Case_Waiting, Case_On_HoldSkipsAny transition not in the list
03

Resolution: close the loop, and ask

On close, one message confirming what was done and how to reopen. It is also the natural place for a one-question survey, because the customer is already in a thread they trust.

A reply after close reopens the case rather than starting a new one, so the history stays in one place.

In Salesforce TriggerStatus → ClosedTemplateCase_ResolvedReply windowInbound within 7 days reopens the CaseOptionalOne-question CSAT, answer written to the Case
Fig 01 · 00001842 · Priya Raman
We have your request (Case 00001842). Our team will review it and update you here. You can reply to this message with anything else that helps.
Sent 08:41 · from Flow · template Case_Acknowledge
The serial number is on the base, HX-4471. It started after the last firmware update.
Received 09:02 · Case Comment · Task on Contact
Thank you, that is on the case now. We are waiting on the firmware team and will update you as soon as we hear.
Sent 11:20 · from Flow · template Case_On_Hold
04 · Replies and exceptions

A reply belongs on the case, not in an inbox.

Every inbound message is written to the Case as a comment and raises a Task for the case owner, so the context is already attached when they open it.

ReplyWhat happensWhere it lands
Extra detail Written to the Case as a comment and raised as a Task for the owner. No status change: a human decides what the detail means. Case Comment, Task
"Any update?" Nothing automatic. It shows the acknowledgement or the progress message did not land, and it is worth counting. Task on Case
Reply after close Reopens the Case within the reply window and keeps the whole thread. Outside it, a new Case is created and linked. Case.Status, Parent Case
STOP Opt-out on the Contact. Status messages stop for every case, current and future. Contact.SMS_Opt_Out__c
05 · Guardrails

One subflow in front of all three tracks.

ConsentContactPointConsent is checked once, in the shared subflow, rather than three times in three flows that will drift apart.
Quiet hoursA case closed at 23:40 does not text anyone at 23:40. The message queues to the next allowed hour in the contact's region.
One per transitionEach track stamps its own field. A case that bounces between two statuses does not send the same update four times.
Channel and languageRead off the Contact. Where neither is set the case routes to a triage queue rather than guessing.
06 · Reporting afterwards

"How well do we keep people informed" becomes answerable.

Because each track stamps a field, coverage is a report rather than an impression. Group by team and the gaps show up as a column, not as a complaint.

Support · status coverageCases
TeamCasesAcknowledged"Any update?"
Tier 11,20498%41
Tier 238694%37
Field21288%29
Billing14497%6
ACKNOWLEDGEDCases with First_Status_Notification_Sent__c set, over all cases created. Below 100% means a channel or a consent gap, and the report says which.
"ANY UPDATE?"Inbound messages matching the chaser keywords. It falls as coverage rises, and it is the number that shows the pattern paying for itself.
BEFORE SLACases with a progress message sent before the SLA milestone. The question managers actually ask.
07 · Implementation note

Where ValueText fits.

ValueText is the send action and the inbound handler. It adds the Send Message invocable action to Flow Builder, writes every inbound message to the Case as a comment and a Task, and keeps the whole thread on the record in the Converse view. Templates, keyword rules and the org-level send window live in ValueText Setup. The three flows, the stamp fields, the guardrail subflow and the report are yours and stay if you leave.

Professional edition or above · Works with standard Case status, no Service Cloud milestone required · 1 SMS segment per update at the published per-country rate
AppExchange review

“The new features have made it very easy for our business to communicate with patients and improve their journey experience.”

Charles Lucas Charles LucasSalesforce Lead · AppExchange
This page sits underSMS for SalesforceThe channel page: how sending, receiving and billing work for SMS.
In the docs
01 Sending Messages from Flow in SalesforceThe invocable action, its inputs and the test run → 02 Log Chat Conversations to Activity HistoryKeeping the thread on the Case for an audit → 03 Opt-Out and Opt-In Management in SalesforceWhere the opt-out lives and what honours it →

Run your messaging inside your CRM.

Rated 4.98 on Salesforce AppExchange
Salesforce Use case · Service · Case

Tell customers where their case stands, without anyone remembering to.

One pattern moves every case through the same three messages: we have it, we are working on it, it is done. Salesforce owns when each fires, so the update does not depend on which agent picked up the ticket.

ObjectCase
Fires onCreated, and on named Status transitions
Reply landsComment and Task on the same Case
ChannelSMS or WhatsApp, by contact preference
01 · What quietly breaks

"We will keep you updated" is a promise made by nobody in particular.

The status changes on the Case and no message goes out. Some agents send a quick note, others do not, and which you get depends on who opened your ticket. Quiet hours, consent and language are each handled by memory.

The cost lands in the queue. Customers who were not told anything write in to ask, so the team handles the same case twice, and every update is typed from scratch because there is no standard wording to reach for.

Then somebody escalates, and there is no trail showing what the customer was told and when. That conversation is much harder than the original fault.

02 · The idea

Acknowledge, progress, resolution. Three moments, driven by Case events rather than by agents, with one shared set of guardrails in front of all three.

03 · The pattern

Three tracks, on the Case you already have.

Case is the system of record for status, priority, owner and SLA. Each track is a record-triggered flow that calls the same guardrail subflow, then sends, then stamps a field so nothing fires twice.

01

Acknowledge: confirm the case exists

Fires when the Case is created from a channel where messaging is allowed. It sends the case number and one line about what happens next, and it invites a reply, because the extra detail a customer adds in the first hour is usually the detail that solves the case.

The flow stamps First_Status_Notification_Sent__c, which is also what tells you later how many cases got one.

In Salesforce Flow typeRecord-triggered, Case, created, after saveTemplateCase_AcknowledgeMerge fieldsCase.CaseNumber, Contact.FirstNameStampsFirst_Status_Notification_Sent__c
02

Progress: update on the transitions that matter

Not every field change deserves a message. Pick a small set of transitions and write one template each: assigned and under investigation, waiting on the customer, on hold behind a third party.

Keeping the set small is the whole discipline. A message per status change teaches customers to ignore the channel, which costs you the one that matters.

In Salesforce TriggerStatus changed, After SaveTransitionsNew → In Progress, In Progress → Waiting on Customer, In Progress → On HoldTemplatesCase_Assigned, Case_Waiting, Case_On_HoldSkipsAny transition not in the list
03

Resolution: close the loop, and ask

On close, one message confirming what was done and how to reopen. It is also the natural place for a one-question survey, because the customer is already in a thread they trust.

A reply after close reopens the case rather than starting a new one, so the history stays in one place.

In Salesforce TriggerStatus → ClosedTemplateCase_ResolvedReply windowInbound within 7 days reopens the CaseOptionalOne-question CSAT, answer written to the Case
Fig 01 · 00001842 · Priya Raman
We have your request (Case 00001842). Our team will review it and update you here. You can reply to this message with anything else that helps.
Sent 08:41 · from Flow · template Case_Acknowledge
The serial number is on the base, HX-4471. It started after the last firmware update.
Received 09:02 · Case Comment · Task on Contact
Thank you, that is on the case now. We are waiting on the firmware team and will update you as soon as we hear.
Sent 11:20 · from Flow · template Case_On_Hold
04 · Replies and exceptions

A reply belongs on the case, not in an inbox.

Every inbound message is written to the Case as a comment and raises a Task for the case owner, so the context is already attached when they open it.

ReplyWhat happensWhere it lands
Extra detail Written to the Case as a comment and raised as a Task for the owner. No status change: a human decides what the detail means. Case Comment, Task
"Any update?" Nothing automatic. It shows the acknowledgement or the progress message did not land, and it is worth counting. Task on Case
Reply after close Reopens the Case within the reply window and keeps the whole thread. Outside it, a new Case is created and linked. Case.Status, Parent Case
STOP Opt-out on the Contact. Status messages stop for every case, current and future. Contact.SMS_Opt_Out__c
05 · Guardrails

One subflow in front of all three tracks.

ConsentContactPointConsent is checked once, in the shared subflow, rather than three times in three flows that will drift apart.
Quiet hoursA case closed at 23:40 does not text anyone at 23:40. The message queues to the next allowed hour in the contact's region.
One per transitionEach track stamps its own field. A case that bounces between two statuses does not send the same update four times.
Channel and languageRead off the Contact. Where neither is set the case routes to a triage queue rather than guessing.
06 · Reporting afterwards

"How well do we keep people informed" becomes answerable.

Because each track stamps a field, coverage is a report rather than an impression. Group by team and the gaps show up as a column, not as a complaint.

Support · status coverageCases
TeamCasesAcknowledged"Any update?"
Tier 11,20498%41
Tier 238694%37
Field21288%29
Billing14497%6
ACKNOWLEDGEDCases with First_Status_Notification_Sent__c set, over all cases created. Below 100% means a channel or a consent gap, and the report says which.
"ANY UPDATE?"Inbound messages matching the chaser keywords. It falls as coverage rises, and it is the number that shows the pattern paying for itself.
BEFORE SLACases with a progress message sent before the SLA milestone. The question managers actually ask.
07 · Implementation note

Where ValueText fits.

ValueText is the send action and the inbound handler. It adds the Send Message invocable action to Flow Builder, writes every inbound message to the Case as a comment and a Task, and keeps the whole thread on the record in the Converse view. Templates, keyword rules and the org-level send window live in ValueText Setup. The three flows, the stamp fields, the guardrail subflow and the report are yours and stay if you leave.

Professional edition or above · Works with standard Case status, no Service Cloud milestone required · 1 SMS segment per update at the published per-country rate
AppExchange review

“The new features have made it very easy for our business to communicate with patients and improve their journey experience.”

Charles Lucas Charles LucasSalesforce Lead · AppExchange
This page sits underSMS for SalesforceThe channel page: how sending, receiving and billing work for SMS.
In the docs
01 Sending Messages from Flow in SalesforceThe invocable action, its inputs and the test run → 02 Log Chat Conversations to Activity HistoryKeeping the thread on the Case for an audit → 03 Opt-Out and Opt-In Management in SalesforceWhere the opt-out lives and what honours it →

Run your messaging inside your CRM.

Rated 4.98 on Salesforce AppExchange