Salesforce Use case · Service · Inbound

Answer the first message automatically, at the hour nobody is at a desk.

An auto-reply on inbound, a bot for the questions that repeat, and a send window that respects the recipient's clock. Three pieces, all inside Salesforce, none of them a 24 hour rota.

ObjectContact, Lead or Case
Fires onInbound message received
Reply landsMessage Bucket and Task on the record
ChannelWhatsApp, with SMS where no session is open
01 · What quietly breaks

Nobody waits with the browser open.

A message arrives at 22:47 and the next human touch is 09:15 the following morning. The customer does not experience that as out of hours, they experience it as no answer, and by the time the reply lands they are talking to somebody else.

The usual answers both fail. Hiring around the clock is expensive and still leaves gaps. Asking the team to reply within minutes all day is asking people to behave like a system, which works right up until it is busy.

Underneath that, the conversations are spread across email, phone and chat with no single place they land, so even the messages that do get answered are answered without the history.

02 · The idea

Acknowledge immediately, answer what repeats, and hold everything else until the hour a person can do something with it. Automation buys the first minute, not the whole conversation.

03 · The pattern

Three pieces, and only the first one is mandatory.

Start with the acknowledgement. Add the bot when you can see which questions actually repeat. Add scheduling when you are messaging across time zones.

01

Acknowledge on inbound, and set the expectation

A record-triggered flow on the inbound message. It replies once per conversation with what happens next and when, and it asks for the one detail that will save a round trip.

Setting a specific expectation is the part that works. "We will get back to you shortly" reads as nothing; "someone will pick it up when the team opens at 09:00" reads as an answer.

In Salesforce TriggerInbound message, no open sessionTemplateInbound_AckOnce perConversation, not per messageStampsFirst_Ack_Sent_At__c on the record
02

Let a bot take the questions that repeat

A bot answers common questions, collects a detail, opens or updates a Case, and hands to a person when it runs out of road. Build it from what the inbox actually contains rather than from what you imagine gets asked.

Give it a hand-off that works. A bot that cannot pass to a human is worse than no bot, because it traps the conversation it was meant to speed up.

In Salesforce Built inValueText Bots, no codeDoesAnswers, collects fields, creates or updates a CaseHands offTo a queue, with the transcript on the recordFallbackAny unmatched reply routes to a person
03

Send on the recipient's clock, not on yours

A time window evaluated in the recipient's own time zone, set once at org level rather than remembered per flow. Outbound queues to the next allowed hour; an acknowledgement to someone who messaged you at 22:47 still goes out at 22:47, because they are awake and they started it.

That distinction between answering and initiating is the whole of the setting.

In Salesforce WindowOrg level, in ValueText SetupEvaluated inThe recipient's time zone, from the recordApplies toOutbound sends the org initiatesDoes not apply toA direct reply inside an open conversation
Fig 01 · +34 6•• ••• 214 · new conversation
Hi, is anyone there? I need to change the delivery address on my order.
Received 22:47 · outside business hours · record matched on number
Thanks for messaging. We have your request and someone will pick it up when the team opens at 09:00. If it is about an order, reply with the order number and we will have it ready.
Sent 22:47 · from Flow · template Inbound_Ack
SO-88213
Received 22:48 · written to the Case · handled at 09:04
04 · Replies and exceptions

Everything lands on a record, including the ones the bot handled.

The transcript is written back whether a person or a bot answered, so the morning shift reads the conversation rather than restarting it.

ReplyWhat happensWhere it lands
First inbound Matched to an existing Contact or Lead by number. If nothing matches, a new record is created rather than the message being orphaned. Message Bucket, matched record
Answered by the bot The full transcript is on the record, and the Case the bot opened carries what it collected. Case, transcript on the record
Handed to a person Task for the queue, and the thread opens in the Converse view with everything already said. Task, Converse view
STOP Opt-out on the record. The acknowledgement and the bot both stop, and the confirmation goes out once. Contact.SMS_Opt_Out__c
05 · Guardrails

Four, and the first one is about not lying.

Say a real timeThe acknowledgement names when a person will look. If the team opens at 09:00, say 09:00. An expectation you miss on the first message costs more than the delay did.
ConsentChecked before any org-initiated message. Answering someone who messaged you is a different case, and the subflow is where that lives.
One per conversationStamped, so a customer sending four messages in a row gets one acknowledgement and not four.
A way out of the botAny unmatched reply routes to a person. There is no loop the customer cannot leave.
06 · Reporting afterwards

The number to watch is how many conversations a person never had to touch.

Not deflection for its own sake. A rising bot share with a flat satisfaction score means it is working; a rising bot share with rising chasers means it is hiding a problem.

Inbound · after hoursMessage Buckets
HourInboundAcknowledgedClosed by bot
09:00 to 18:003,140100%22%
18:00 to 22:00612100%34%
22:00 to 09:00388100%29%
Weekend744100%31%
ACKNOWLEDGEDConversations with an acknowledgement sent. Anything below 100% is a matching failure and the report names the records.
CLOSED BY BOTConversations with no human message at all. Read it next to chaser volume, never on its own.
HANDED OFFConversations the bot passed to a queue. A rising number is the bot finding its own edge, which is the correct behaviour.
07 · Implementation note

Where ValueText fits.

ValueText is the inbound handler, the bot builder and the send action. It matches an inbound number to a record, writes the transcript back, exposes the send action to Flow, and holds the org-level send window. Bots are built in ValueText with no code. The flows, the Cases, the queues and the reports are standard Salesforce and stay if you leave.

Professional edition or above · WhatsApp needs an approved template to open a conversation, not to continue one · 1 SMS segment per reply at the published per-country rate
AppExchange review

“Valuetext can be so simple and yet so complex... if you only need the basic (even for Bots) it gets the job done without much hassle…”

Francisco Lozano Francisco LozanoAppExchange review
This page sits underWhatsApp for SalesforceThe channel page: templates, the 24 hour window and Meta pricing.
In the docs
01 Bots for Salesforce: Automate Messaging and WorkflowsBuilding the bot, the hand-off and the fallback → 02 Record Linking for First Incoming MessagesHow an unknown number finds or creates its record → 03 Configure Channel Settings in ValueTextThe org-level send window and the channels it applies to →

Run your messaging inside your CRM.

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

Answer the first message automatically, at the hour nobody is at a desk.

An auto-reply on inbound, a bot for the questions that repeat, and a send window that respects the recipient's clock. Three pieces, all inside Salesforce, none of them a 24 hour rota.

ObjectContact, Lead or Case
Fires onInbound message received
Reply landsMessage Bucket and Task on the record
ChannelWhatsApp, with SMS where no session is open
01 · What quietly breaks

Nobody waits with the browser open.

A message arrives at 22:47 and the next human touch is 09:15 the following morning. The customer does not experience that as out of hours, they experience it as no answer, and by the time the reply lands they are talking to somebody else.

The usual answers both fail. Hiring around the clock is expensive and still leaves gaps. Asking the team to reply within minutes all day is asking people to behave like a system, which works right up until it is busy.

Underneath that, the conversations are spread across email, phone and chat with no single place they land, so even the messages that do get answered are answered without the history.

02 · The idea

Acknowledge immediately, answer what repeats, and hold everything else until the hour a person can do something with it. Automation buys the first minute, not the whole conversation.

03 · The pattern

Three pieces, and only the first one is mandatory.

Start with the acknowledgement. Add the bot when you can see which questions actually repeat. Add scheduling when you are messaging across time zones.

01

Acknowledge on inbound, and set the expectation

A record-triggered flow on the inbound message. It replies once per conversation with what happens next and when, and it asks for the one detail that will save a round trip.

Setting a specific expectation is the part that works. "We will get back to you shortly" reads as nothing; "someone will pick it up when the team opens at 09:00" reads as an answer.

In Salesforce TriggerInbound message, no open sessionTemplateInbound_AckOnce perConversation, not per messageStampsFirst_Ack_Sent_At__c on the record
02

Let a bot take the questions that repeat

A bot answers common questions, collects a detail, opens or updates a Case, and hands to a person when it runs out of road. Build it from what the inbox actually contains rather than from what you imagine gets asked.

Give it a hand-off that works. A bot that cannot pass to a human is worse than no bot, because it traps the conversation it was meant to speed up.

In Salesforce Built inValueText Bots, no codeDoesAnswers, collects fields, creates or updates a CaseHands offTo a queue, with the transcript on the recordFallbackAny unmatched reply routes to a person
03

Send on the recipient's clock, not on yours

A time window evaluated in the recipient's own time zone, set once at org level rather than remembered per flow. Outbound queues to the next allowed hour; an acknowledgement to someone who messaged you at 22:47 still goes out at 22:47, because they are awake and they started it.

That distinction between answering and initiating is the whole of the setting.

In Salesforce WindowOrg level, in ValueText SetupEvaluated inThe recipient's time zone, from the recordApplies toOutbound sends the org initiatesDoes not apply toA direct reply inside an open conversation
Fig 01 · +34 6•• ••• 214 · new conversation
Hi, is anyone there? I need to change the delivery address on my order.
Received 22:47 · outside business hours · record matched on number
Thanks for messaging. We have your request and someone will pick it up when the team opens at 09:00. If it is about an order, reply with the order number and we will have it ready.
Sent 22:47 · from Flow · template Inbound_Ack
SO-88213
Received 22:48 · written to the Case · handled at 09:04
04 · Replies and exceptions

Everything lands on a record, including the ones the bot handled.

The transcript is written back whether a person or a bot answered, so the morning shift reads the conversation rather than restarting it.

ReplyWhat happensWhere it lands
First inbound Matched to an existing Contact or Lead by number. If nothing matches, a new record is created rather than the message being orphaned. Message Bucket, matched record
Answered by the bot The full transcript is on the record, and the Case the bot opened carries what it collected. Case, transcript on the record
Handed to a person Task for the queue, and the thread opens in the Converse view with everything already said. Task, Converse view
STOP Opt-out on the record. The acknowledgement and the bot both stop, and the confirmation goes out once. Contact.SMS_Opt_Out__c
05 · Guardrails

Four, and the first one is about not lying.

Say a real timeThe acknowledgement names when a person will look. If the team opens at 09:00, say 09:00. An expectation you miss on the first message costs more than the delay did.
ConsentChecked before any org-initiated message. Answering someone who messaged you is a different case, and the subflow is where that lives.
One per conversationStamped, so a customer sending four messages in a row gets one acknowledgement and not four.
A way out of the botAny unmatched reply routes to a person. There is no loop the customer cannot leave.
06 · Reporting afterwards

The number to watch is how many conversations a person never had to touch.

Not deflection for its own sake. A rising bot share with a flat satisfaction score means it is working; a rising bot share with rising chasers means it is hiding a problem.

Inbound · after hoursMessage Buckets
HourInboundAcknowledgedClosed by bot
09:00 to 18:003,140100%22%
18:00 to 22:00612100%34%
22:00 to 09:00388100%29%
Weekend744100%31%
ACKNOWLEDGEDConversations with an acknowledgement sent. Anything below 100% is a matching failure and the report names the records.
CLOSED BY BOTConversations with no human message at all. Read it next to chaser volume, never on its own.
HANDED OFFConversations the bot passed to a queue. A rising number is the bot finding its own edge, which is the correct behaviour.
07 · Implementation note

Where ValueText fits.

ValueText is the inbound handler, the bot builder and the send action. It matches an inbound number to a record, writes the transcript back, exposes the send action to Flow, and holds the org-level send window. Bots are built in ValueText with no code. The flows, the Cases, the queues and the reports are standard Salesforce and stay if you leave.

Professional edition or above · WhatsApp needs an approved template to open a conversation, not to continue one · 1 SMS segment per reply at the published per-country rate
AppExchange review

“Valuetext can be so simple and yet so complex... if you only need the basic (even for Bots) it gets the job done without much hassle…”

Francisco Lozano Francisco LozanoAppExchange review
This page sits underWhatsApp for SalesforceThe channel page: templates, the 24 hour window and Meta pricing.
In the docs
01 Bots for Salesforce: Automate Messaging and WorkflowsBuilding the bot, the hand-off and the fallback → 02 Record Linking for First Incoming MessagesHow an unknown number finds or creates its record → 03 Configure Channel Settings in ValueTextThe org-level send window and the channels it applies to →

Run your messaging inside your CRM.

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

Answer the first message automatically, at the hour nobody is at a desk.

An auto-reply on inbound, a bot for the questions that repeat, and a send window that respects the recipient's clock. Three pieces, all inside Salesforce, none of them a 24 hour rota.

ObjectContact, Lead or Case
Fires onInbound message received
Reply landsMessage Bucket and Task on the record
ChannelWhatsApp, with SMS where no session is open
01 · What quietly breaks

Nobody waits with the browser open.

A message arrives at 22:47 and the next human touch is 09:15 the following morning. The customer does not experience that as out of hours, they experience it as no answer, and by the time the reply lands they are talking to somebody else.

The usual answers both fail. Hiring around the clock is expensive and still leaves gaps. Asking the team to reply within minutes all day is asking people to behave like a system, which works right up until it is busy.

Underneath that, the conversations are spread across email, phone and chat with no single place they land, so even the messages that do get answered are answered without the history.

02 · The idea

Acknowledge immediately, answer what repeats, and hold everything else until the hour a person can do something with it. Automation buys the first minute, not the whole conversation.

03 · The pattern

Three pieces, and only the first one is mandatory.

Start with the acknowledgement. Add the bot when you can see which questions actually repeat. Add scheduling when you are messaging across time zones.

01

Acknowledge on inbound, and set the expectation

A record-triggered flow on the inbound message. It replies once per conversation with what happens next and when, and it asks for the one detail that will save a round trip.

Setting a specific expectation is the part that works. "We will get back to you shortly" reads as nothing; "someone will pick it up when the team opens at 09:00" reads as an answer.

In Salesforce TriggerInbound message, no open sessionTemplateInbound_AckOnce perConversation, not per messageStampsFirst_Ack_Sent_At__c on the record
02

Let a bot take the questions that repeat

A bot answers common questions, collects a detail, opens or updates a Case, and hands to a person when it runs out of road. Build it from what the inbox actually contains rather than from what you imagine gets asked.

Give it a hand-off that works. A bot that cannot pass to a human is worse than no bot, because it traps the conversation it was meant to speed up.

In Salesforce Built inValueText Bots, no codeDoesAnswers, collects fields, creates or updates a CaseHands offTo a queue, with the transcript on the recordFallbackAny unmatched reply routes to a person
03

Send on the recipient's clock, not on yours

A time window evaluated in the recipient's own time zone, set once at org level rather than remembered per flow. Outbound queues to the next allowed hour; an acknowledgement to someone who messaged you at 22:47 still goes out at 22:47, because they are awake and they started it.

That distinction between answering and initiating is the whole of the setting.

In Salesforce WindowOrg level, in ValueText SetupEvaluated inThe recipient's time zone, from the recordApplies toOutbound sends the org initiatesDoes not apply toA direct reply inside an open conversation
Fig 01 · +34 6•• ••• 214 · new conversation
Hi, is anyone there? I need to change the delivery address on my order.
Received 22:47 · outside business hours · record matched on number
Thanks for messaging. We have your request and someone will pick it up when the team opens at 09:00. If it is about an order, reply with the order number and we will have it ready.
Sent 22:47 · from Flow · template Inbound_Ack
SO-88213
Received 22:48 · written to the Case · handled at 09:04
04 · Replies and exceptions

Everything lands on a record, including the ones the bot handled.

The transcript is written back whether a person or a bot answered, so the morning shift reads the conversation rather than restarting it.

ReplyWhat happensWhere it lands
First inbound Matched to an existing Contact or Lead by number. If nothing matches, a new record is created rather than the message being orphaned. Message Bucket, matched record
Answered by the bot The full transcript is on the record, and the Case the bot opened carries what it collected. Case, transcript on the record
Handed to a person Task for the queue, and the thread opens in the Converse view with everything already said. Task, Converse view
STOP Opt-out on the record. The acknowledgement and the bot both stop, and the confirmation goes out once. Contact.SMS_Opt_Out__c
05 · Guardrails

Four, and the first one is about not lying.

Say a real timeThe acknowledgement names when a person will look. If the team opens at 09:00, say 09:00. An expectation you miss on the first message costs more than the delay did.
ConsentChecked before any org-initiated message. Answering someone who messaged you is a different case, and the subflow is where that lives.
One per conversationStamped, so a customer sending four messages in a row gets one acknowledgement and not four.
A way out of the botAny unmatched reply routes to a person. There is no loop the customer cannot leave.
06 · Reporting afterwards

The number to watch is how many conversations a person never had to touch.

Not deflection for its own sake. A rising bot share with a flat satisfaction score means it is working; a rising bot share with rising chasers means it is hiding a problem.

Inbound · after hoursMessage Buckets
HourInboundAcknowledgedClosed by bot
09:00 to 18:003,140100%22%
18:00 to 22:00612100%34%
22:00 to 09:00388100%29%
Weekend744100%31%
ACKNOWLEDGEDConversations with an acknowledgement sent. Anything below 100% is a matching failure and the report names the records.
CLOSED BY BOTConversations with no human message at all. Read it next to chaser volume, never on its own.
HANDED OFFConversations the bot passed to a queue. A rising number is the bot finding its own edge, which is the correct behaviour.
07 · Implementation note

Where ValueText fits.

ValueText is the inbound handler, the bot builder and the send action. It matches an inbound number to a record, writes the transcript back, exposes the send action to Flow, and holds the org-level send window. Bots are built in ValueText with no code. The flows, the Cases, the queues and the reports are standard Salesforce and stay if you leave.

Professional edition or above · WhatsApp needs an approved template to open a conversation, not to continue one · 1 SMS segment per reply at the published per-country rate
AppExchange review

“Valuetext can be so simple and yet so complex... if you only need the basic (even for Bots) it gets the job done without much hassle…”

Francisco Lozano Francisco LozanoAppExchange review
This page sits underWhatsApp for SalesforceThe channel page: templates, the 24 hour window and Meta pricing.
In the docs
01 Bots for Salesforce: Automate Messaging and WorkflowsBuilding the bot, the hand-off and the fallback → 02 Record Linking for First Incoming MessagesHow an unknown number finds or creates its record → 03 Configure Channel Settings in ValueTextThe org-level send window and the channels it applies to →

Run your messaging inside your CRM.

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

Answer the first message automatically, at the hour nobody is at a desk.

An auto-reply on inbound, a bot for the questions that repeat, and a send window that respects the recipient's clock. Three pieces, all inside Salesforce, none of them a 24 hour rota.

ObjectContact, Lead or Case
Fires onInbound message received
Reply landsMessage Bucket and Task on the record
ChannelWhatsApp, with SMS where no session is open
01 · What quietly breaks

Nobody waits with the browser open.

A message arrives at 22:47 and the next human touch is 09:15 the following morning. The customer does not experience that as out of hours, they experience it as no answer, and by the time the reply lands they are talking to somebody else.

The usual answers both fail. Hiring around the clock is expensive and still leaves gaps. Asking the team to reply within minutes all day is asking people to behave like a system, which works right up until it is busy.

Underneath that, the conversations are spread across email, phone and chat with no single place they land, so even the messages that do get answered are answered without the history.

02 · The idea

Acknowledge immediately, answer what repeats, and hold everything else until the hour a person can do something with it. Automation buys the first minute, not the whole conversation.

03 · The pattern

Three pieces, and only the first one is mandatory.

Start with the acknowledgement. Add the bot when you can see which questions actually repeat. Add scheduling when you are messaging across time zones.

01

Acknowledge on inbound, and set the expectation

A record-triggered flow on the inbound message. It replies once per conversation with what happens next and when, and it asks for the one detail that will save a round trip.

Setting a specific expectation is the part that works. "We will get back to you shortly" reads as nothing; "someone will pick it up when the team opens at 09:00" reads as an answer.

In Salesforce TriggerInbound message, no open sessionTemplateInbound_AckOnce perConversation, not per messageStampsFirst_Ack_Sent_At__c on the record
02

Let a bot take the questions that repeat

A bot answers common questions, collects a detail, opens or updates a Case, and hands to a person when it runs out of road. Build it from what the inbox actually contains rather than from what you imagine gets asked.

Give it a hand-off that works. A bot that cannot pass to a human is worse than no bot, because it traps the conversation it was meant to speed up.

In Salesforce Built inValueText Bots, no codeDoesAnswers, collects fields, creates or updates a CaseHands offTo a queue, with the transcript on the recordFallbackAny unmatched reply routes to a person
03

Send on the recipient's clock, not on yours

A time window evaluated in the recipient's own time zone, set once at org level rather than remembered per flow. Outbound queues to the next allowed hour; an acknowledgement to someone who messaged you at 22:47 still goes out at 22:47, because they are awake and they started it.

That distinction between answering and initiating is the whole of the setting.

In Salesforce WindowOrg level, in ValueText SetupEvaluated inThe recipient's time zone, from the recordApplies toOutbound sends the org initiatesDoes not apply toA direct reply inside an open conversation
Fig 01 · +34 6•• ••• 214 · new conversation
Hi, is anyone there? I need to change the delivery address on my order.
Received 22:47 · outside business hours · record matched on number
Thanks for messaging. We have your request and someone will pick it up when the team opens at 09:00. If it is about an order, reply with the order number and we will have it ready.
Sent 22:47 · from Flow · template Inbound_Ack
SO-88213
Received 22:48 · written to the Case · handled at 09:04
04 · Replies and exceptions

Everything lands on a record, including the ones the bot handled.

The transcript is written back whether a person or a bot answered, so the morning shift reads the conversation rather than restarting it.

ReplyWhat happensWhere it lands
First inbound Matched to an existing Contact or Lead by number. If nothing matches, a new record is created rather than the message being orphaned. Message Bucket, matched record
Answered by the bot The full transcript is on the record, and the Case the bot opened carries what it collected. Case, transcript on the record
Handed to a person Task for the queue, and the thread opens in the Converse view with everything already said. Task, Converse view
STOP Opt-out on the record. The acknowledgement and the bot both stop, and the confirmation goes out once. Contact.SMS_Opt_Out__c
05 · Guardrails

Four, and the first one is about not lying.

Say a real timeThe acknowledgement names when a person will look. If the team opens at 09:00, say 09:00. An expectation you miss on the first message costs more than the delay did.
ConsentChecked before any org-initiated message. Answering someone who messaged you is a different case, and the subflow is where that lives.
One per conversationStamped, so a customer sending four messages in a row gets one acknowledgement and not four.
A way out of the botAny unmatched reply routes to a person. There is no loop the customer cannot leave.
06 · Reporting afterwards

The number to watch is how many conversations a person never had to touch.

Not deflection for its own sake. A rising bot share with a flat satisfaction score means it is working; a rising bot share with rising chasers means it is hiding a problem.

Inbound · after hoursMessage Buckets
HourInboundAcknowledgedClosed by bot
09:00 to 18:003,140100%22%
18:00 to 22:00612100%34%
22:00 to 09:00388100%29%
Weekend744100%31%
ACKNOWLEDGEDConversations with an acknowledgement sent. Anything below 100% is a matching failure and the report names the records.
CLOSED BY BOTConversations with no human message at all. Read it next to chaser volume, never on its own.
HANDED OFFConversations the bot passed to a queue. A rising number is the bot finding its own edge, which is the correct behaviour.
07 · Implementation note

Where ValueText fits.

ValueText is the inbound handler, the bot builder and the send action. It matches an inbound number to a record, writes the transcript back, exposes the send action to Flow, and holds the org-level send window. Bots are built in ValueText with no code. The flows, the Cases, the queues and the reports are standard Salesforce and stay if you leave.

Professional edition or above · WhatsApp needs an approved template to open a conversation, not to continue one · 1 SMS segment per reply at the published per-country rate
AppExchange review

“Valuetext can be so simple and yet so complex... if you only need the basic (even for Bots) it gets the job done without much hassle…”

Francisco Lozano Francisco LozanoAppExchange review
This page sits underWhatsApp for SalesforceThe channel page: templates, the 24 hour window and Meta pricing.
In the docs
01 Bots for Salesforce: Automate Messaging and WorkflowsBuilding the bot, the hand-off and the fallback → 02 Record Linking for First Incoming MessagesHow an unknown number finds or creates its record → 03 Configure Channel Settings in ValueTextThe org-level send window and the channels it applies to →

Run your messaging inside your CRM.

Rated 4.98 on Salesforce AppExchange