> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ycloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Service messages

> Understand the customer service window and choose a free-form WhatsApp message type for your reply.

Service messages are free-form messages that you can send while a customer service window is open. Unlike template messages, their content does not require template approval before each use.

Use them to answer a question, share a document, provide choices, or continue a customer interaction.

## Customer service window

The customer service window lasts 24 hours. Under Meta's current service-message rules, a WhatsApp user's message or call starts the window. Another user message or call refreshes it.

Your own outgoing message does not, by itself, refresh the window. Sending a template is therefore not the same as receiving a customer response.

See Meta's [Service messages documentation](https://developers.facebook.com/docs/whatsapp/conversation-types/) for the platform rules. For a [Business app coexistence setup](/en/documentation/whatsapp-business-platform/accounts-and-business-identity/whatsapp-business-app-coexistence), also check the app and API behavior described in that guide.

### Example timeline

All times below use the same time zone.

| Event | Effect on the window |
| - | - |
| Monday, 09:00: the customer sends a question. | A window opens until Tuesday, 09:00. |
| Monday, 09:15: your team replies. | The expiry time stays Tuesday, 09:00. |
| Monday, 14:00: the customer sends another message. | The window refreshes until Tuesday, 14:00. |
| Tuesday, after 14:00: the customer has not contacted you again. | Use an appropriate approved template if you need to follow up. |
| The customer replies to that template. | A new window opens from the customer's reply. |

### Choose what to send

| Situation | Sending choice |
| - | - |
| The window is open. | Use a supported service message or an available approved template, subject to applicable policies. |
| The window has expired. | Use an appropriate approved template. |
| You have not received a customer interaction that opens a window. | Do not assume the window is open because you have a phone number or customer consent. |
| You sent a template but the customer has not replied. | Sending the template alone does not open a new service window. |

The service window determines whether you can send free-form messages. Pricing and free-entry-point rules are separate. Check the current [WhatsApp pricing](/en/documentation/whatsapp-business-platform/pricing-limits-and-quality/whatsapp-pricing) instead of treating every open window as the same billing situation.

## Free-form message types

The YCloud Messages API supports the following outbound content types in addition to templates.

| Type | Use it for |
| - | - |
| Text | A direct answer, explanation, or link. |
| Image | A product photo, visual instruction, or other image. |
| Video | A demonstration or short visual explanation. |
| Audio | An audio response. |
| Document | A receipt, guide, or other file. |
| Sticker | A supported sticker. |
| Location | A specific place, such as a store or pickup point. |
| Contacts | Structured contact details. |
| Reaction | An emoji response to an existing message. |
| Interactive | Buttons, lists, and other supported guided interactions. |

These are API capabilities. The controls available in Inbox or another YCloud product may be a subset. Use the guide for the workflow you are using.

### Interactive messages

Choose an interaction based on the next action you want the customer to take.

| Interaction | Typical use |
| - | - |
| Reply buttons | Choose from a small set of answers. |
| List | Select an item from an organized set of options. |
| URL button | Open a relevant web page. |
| Location request | Ask the customer to share a location. |
| Product or catalog message | Show configured catalog items. |
| Flow | Collect structured information, such as appointment details. |
| Call button | Offer a supported WhatsApp calling action. |
| Carousel | Present multiple media cards. |
| Order details or status | Support an eligible commerce or payment workflow. |

Interactive types have their own prerequisites, required fields, and platform availability. A type appearing in the API does not mean that every number, region, or console workflow can use it.

See [Send a WhatsApp message](/en/api-reference/guides/whatsapp-platform/send-whatsapp-message), [WhatsApp Flows](/en/documentation/whatsapp-business-platform/more-whatsapp-features/whatsapp-flows/index), and [WhatsApp Calling](/en/documentation/whatsapp-business-platform/more-whatsapp-features/whatsapp-calling) for the relevant next step.

<Frame caption="An interactive reply-button example for an open service window. Buttons return a choice to the business.">
  <div style={{ position: "relative", width: "100%", maxWidth: "600px", margin: "0 auto" }}>
    <img src="https://mintcdn.com/lchnan/Q9LYCM-XEE-Z8muf/product-assets/whatsapp-platform-2026-09-22/meta-service-reply-buttons.png?fit=max&auto=format&n=Q9LYCM-XEE-Z8muf&q=85&s=93a4e4b0a2cd1c8fca2f7792fc502736" alt="Meta interactive service message labeling the header, body, footer, and Change and Cancel reply buttons." style={{ width: "100%", height: "auto", margin: 0 }} width="1671" height="1624" data-path="product-assets/whatsapp-platform-2026-09-22/meta-service-reply-buttons.png" />
  </div>
</Frame>

Source: [Meta official example](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/interactive-reply-buttons-messages/).

## Practical limits for common free-form messages

These are YCloud API constraints for the specified message type, not the limits for template buttons.

| Content | Constraint |
| - | - |
| Text body | Up to **4,096 characters**. |
| Interactive reply buttons | Up to **3 buttons**; button titles up to **20 characters**. |
| List message | Up to **10 rows total across all sections**, not 10 per section. |
| List row | Title up to **24 characters**; optional description up to **72 characters**. |
| List-opening button | Up to **20 characters**. |
| Media reference | Supply a media `id` or an HTTP/HTTPS `link`, not both. |
| Document filename | Use the document's `filename` field; do not put it into an unrelated message field. |

For reply buttons and lists, use stable IDs that map to your workflow. For example, `track_order` is an action identifier; **Track my order** is the text the customer sees. Handle the returned ID rather than depending only on the displayed label, which may differ by language.

### Example: a short service menu

While the window is open, a delivery business could ask:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
How can we help with your delivery?

[Track my order]  [Change address]  [Talk to a person]
```

Three reply buttons fit this choice. For seven store locations, a list is usually clearer. For a multi-screen appointment form, use a Flow. More buttons do not necessarily make an interaction better.

### Media checks that prevent avoidable failures

* Confirm that the sender can use the media reference and the service can retrieve any link.
* Match the message type to the actual file format. Renaming a file extension does not convert it.
* Use the supported MIME type and size for that media type.
* Preview image text and documents on a phone, not only a desktop.
* Keep media links available for delivery; do not rely on an expiring authenticated browser session.
* Do not use a media caption as a substitute for a template's body or header parameters.

### Common media formats and size limits

| Message | Common supported file types | Maximum file size |
| - | - | - |
| Image | JPEG or PNG | 5 MB |
| Video | MP4 or 3GPP | 16 MB |
| Audio | AAC, AMR, MP3, MP4 audio, or supported OGG | 16 MB |
| Document | PDF; additional document types depend on the sending surface | 100 MB for the supported PDF path |
| Static sticker | WebP | 100 KB |
| Animated sticker | WebP | 500 KB |

For images, use 8-bit RGB or RGBA. For video, Meta supports H.264 video with AAC audio, with a single audio stream or no audio. For OGG audio, use the OPUS codec and mono input; changing the extension is not sufficient.

These platform limits do not make every format available in every YCloud composer. For example, the template sample-media contract accepts a narrower set than general service-message media.

Sources: [Meta media formats](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media/), [image requirements](https://developers.facebook.com/docs/whatsapp/cloud-api/messages/image-messages/), [sticker limits](https://developers.facebook.com/docs/whatsapp/cloud-api/messages/sticker-messages/), and the [YCloud OpenAPI](https://newdocs.ycloud.com/openapi/endpoints/ycloud-api-v2.yaml).

## When a queued reply crosses the window boundary

A reply drafted at 08:59 may be sent after a window expires at 09:00. Check eligibility at dispatch, not only when an agent opens the conversation or an automation starts.

If it has expired, select an approved template that matches the follow-up purpose. Do not send a template and immediately assume you can append free-form details: the template does not reopen the service window by itself.

An ad-related **72-hour free-entry-point window is a pricing rule**, not 72 hours of unrestricted free-form replies. Continue applying the 24-hour service-message rule.

## Keep the reply useful

* Choose the simplest format that lets the customer understand or act.
* Avoid asking for information you already have.
* Keep buttons and list options clear.
* Check the window when the message is sent, not only when it is drafted.
* Respect [opt-out requests](/en/documentation/whatsapp-business-platform/consent-policies-and-account-health/customer-opt-out).

If Inbox cannot display an incoming message, follow [Unsupported messages in Inbox](/en/documentation/inbox/unsupported-messages-in-inbox). Do not infer the original content from a placeholder.

## Next steps

* [Reply through Inbox](/en/documentation/inbox/inbox-introduction).
* [Send through the API](/en/api-reference/guides/whatsapp-platform/send-whatsapp-message).
* [Use a template outside the window](/en/documentation/whatsapp-business-platform/messaging/message-templates/index).
* [Check message delivery statuses](/en/documentation/whatsapp-business-platform/messaging/message-delivery-statuses).

## Frequently asked questions

<AccordionGroup>
  <Accordion title="A customer messaged yesterday and my agent only opened the chat today. When does the window start?">
    The customer's qualifying interaction starts the window—not when an agent is assigned or opens Inbox. Use the timestamp of the latest qualifying customer interaction and check again at dispatch. If the window has ended, send a suitable approved template and wait for a qualifying customer response before returning to free-form messaging.
  </Accordion>

  <Accordion title="The customer clicked a URL button. Does that reopen the service window?">
    Opening a website is not itself an inbound WhatsApp message. Do not reset the window from a link-click report. Use actual qualifying inbound activity; a quick reply that sends a message back is different from a button that only opens a URL.
  </Accordion>

  <Accordion title="Can I send a list message to restart an inactive conversation?">
    Not as a free-form workaround. Lists and ordinary reply-button messages are service-message formats and need an open window. Outside it, use an approved template with supported components and a purpose the customer expects.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.