How Direct Send works
Direct Send uses templates behind the scenes. You can submit finished text or interactive content. You can also reference an existing Utility template and ask YCloud to convert its supported components into a Direct Send message.
Meta matches your message content to an existing template. If there is no match, Meta removes personally identifiable information, detects the language, and generates a new template in the background for future matching messages.
For example, “Your order A123456 has shipped” and “Your order B789012 has shipped” share the same structure. Later notifications can reuse a matching generated template.
Generated templates retain category, quality, and performance information. This lets you identify which content is performing well or causing delivery problems, even though you did not create the template yourself.
Supported features and limits
Eligibility and sending scope
Connect your WABA and business phone number to YCloud. In Meta WhatsApp Manager → Message templates, check whether your business is eligible for Direct Send. If access is unavailable for your WABA, use an approved Utility template or contact YCloud to check eligibility. Utility Direct Send can initiate an expected notification outside the 24-hour customer service window. Obtain the customer’s permission and keep the content tied to their request, transaction, account, or qualifying essential information. Promotions and verification codes are outside this Utility workflow.Message length and buttons
The sending examples below use text headers. Text messages do not display URL previews. Account limits and throughput controls still apply.
Use text headers for custom
interactive Direct Send requests. An image header
is available only when you convert a supported template and Meta has enabled
that capability for your WABA.
Delivery lifetime (TTL)
ttlSeconds sets how long a message can remain eligible for delivery. If it cannot be delivered within that period, it is dropped. A delivered message is not deleted when its TTL expires.
The default and the permitted custom range differ. For a delivery update that is useful for only 30 minutes, set
ttlSeconds: 1800; do not leave it at the default.
Supported message types
The following formats cover text notifications, links, and customer replies through YCloud.
A URL button opens a website. A reply button sends the selected response back to your business, so your application can continue the workflow.
Handle reply-button responses
Although you send aninteractive request, Direct Send delivers the content as a template. A customer’s reply-button tap therefore uses the template quick-reply format: type: button, with button.payload and button.text.
Relevant fields in a YCloud inbound-message event:
button.payload to identify the action and context.id to correlate the reply with the original message’s wamid. Do not read this response from interactive.button_reply, which is the ordinary free-form reply-button format.
Send through YCloud
Prepare a server-side API key and the sender and recipient numbers in E.164 format. You need the WABA ID only if you choose to submit message samples.1. Choose the submission mode
The
sendDirectly endpoint name describes submission timing. To use Direct Send, your WABA must have access and your request must include the Direct Send fields below.
2. Build the request
These examples submit complete content synchronously. You can also use a queued send or convert an existing Utility template. Replace the phone number placeholders and example URL before sending.
- Text
3. Track delivery
Save the returned messageid, your externalId, and the wamid when available. Receive updates through whatsapp.message.updated, or query GET /v2/whatsapp/messages/{id}.
After accepted, the sending result is sent or failed. Successful messages can progress to delivered and read. An accepted request is not a delivery receipt.
For synchronous submission errors, inspect error.whatsappApiError when present. For queued messages, inspect subsequent status updates. If a request times out, reconcile the original message before retrying.
Convert an existing Utility template
Use an existing Utility template in your WABA. Settype: "template" and
useDirectSend: true. Supply the template name, language, and every required
parameter. YCloud replaces the variables and converts supported components
into text or interactive content with category: "utility". The template must
meet the conversion limits below. YCloud does not require APPROVED status for
this conversion.
If the template has an image header, confirm that Meta has enabled image-header
Direct Send for your WABA before using it. This requires separate Meta access.
For this example, use an existing utility template named order_update with
the body Your order {{1}} has been updated. and no header, footer, or buttons:
type becomes
text, and the template variable becomes the supplied order ID:
accepted response does not confirm delivery. Store the message id and
track whatsapp.message.updated events. Review the conversion limits below
before reusing a template with headers or buttons.
If YCloud returns WHATSAPP_DIRECT_SEND_UNSUPPORTED_COMPONENT, check the
template’s header, buttons, and unresolved variables against the limits below.
If the WABA cannot use Direct Send, check its eligibility before retrying or
send an approved Utility template through the ordinary template workflow.
Set the message lifetime
For template conversion, a requestttlSeconds value takes precedence over the
template TTL. If you omit it, YCloud inherits a positive template TTL up to
43200 seconds. A template TTL below 30 seconds fails validation, so override
it with a valid request value. YCloud does not inherit template TTL values above
43200. If neither value applies, Meta uses its default TTL.
Name a Utility Direct Send template
template.name identifies an existing template in the conversion request above.
templateName serves a different purpose: set it when you want Meta to reuse a recognizable name for a Utility
Direct Send template. The field is optional and does not enable Direct Send by
itself. You must also set useDirectSend: true or category: "utility".
400 with
target templateName and message A template with the same name already exists. Choose another name before retrying.
templateName is not supported for Authentication Direct Send. For a queued
Utility Direct Send message, YCloud returns the validation error without returning
a message ID and otherwise forwards the name to Meta without storing it on the
message record. YCloud ignores the field for messages that do not use Direct Send.
Template conversion and language limits
Utility Direct Send supports text, CTA URL buttons, and reply buttons. These limits also apply when YCloud converts a utility template:
Do not combine CTA URL and quick reply buttons. Other header and button types
cannot be converted. Unsupported components or unresolved template variables
return HTTP
400 with code WHATSAPP_DIRECT_SEND_UNSUPPORTED_COMPONENT.
Language support
Direct Send supports WhatsApp template languages except:
Use a supported language for Direct Send workflows.
View templates generated by Direct Send in YCloud
- Open WhatsApp Manager → Templates in the YCloud console.
- Select the WABA used to send the message.
- Set Creator → Auto generated. Use Category → Utility to narrow the list to Utility templates.
- Check the template’s name, category, language, status, and last updated time. Click its name or Insights to open its preview and performance details.

Set Creator to Auto generated. This test WABA has no matching generated templates.
auto_generated. Use the Auto generated filter to identify them rather than relying only on their names.
The insight page shows the message preview and available delivery, failure, read, and interaction statistics for the selected period. Use the template’s status and content together when investigating a warning or a paused template.
Generated templates cannot be edited or deleted manually. To change the notification, change the content in your send request; Meta then matches or generates a template for that content.
Integrity and content guidelines
Keep Utility content specific and non-promotional
Utility messages should follow an expected customer action or provide qualifying essential information. State the relevant order, appointment, account, or transaction clearly.
Changing
category to utility does not change the meaning of the content. Meta continues to assess generated templates after sending. You can check a materially different use case with a message sample before sending.
Check a new use case with message samples (optional)
POST /v2/whatsapp/messages/{wabaId}/messageSamples submits one example to Meta and returns the category Meta detects. It does not send a message to a customer. This check is optional; you do not need to call it for every message or before using Direct Send. For a new Utility use case, we recommend checking three or four representative samples, one per request.
Replace WABA_ID with your WhatsApp Business Account ID and set YCLOUD_API_KEY in your environment. Use fictional customer details in the sample:
category before using the content in a Utility Direct Send request. If Meta detects MARKETING or AUTHENTICATION, revise the content or use the appropriate messaging workflow. For a button sample, submit the type and interactive fields from a sending example above; omit recipient and sending fields.
Distinguish a paused template from an account restriction
A template can be paused because of low quality. Messages that match it, or are very similar, can then fail with Meta error132015. Find the affected template in YCloud, inspect its content and status, and address the cause before resuming that notification.
Repeated category misuse can restrict Direct Send for the entire WABA:
Follow the account notice for the active restriction and expiry. A successful review of one template does not automatically lift an account-level restriction.
Receive YCloud notifications
Subscribe to
whatsapp.template.correct_category_detection through your webhook endpoint if you want category-detection notifications. It is not a response to messageSamples, and it does not fire for every message. In the event’s whatsappTemplate, compare previousCategory with category. For example, previousCategory: "UTILITY" and category: "MARKETING" means Meta identified marketing content in a Utility Direct Send template. Review the content before sending similar messages again. Use whatsapp.message.updated to track delivery separately.
Relevant fields from a YCloud account-restriction event:
violationType for the reason and restrictions[].expiration for its expiry, when supplied.
Request a review of a category decision
If you believe the content was incorrectly flagged, open Meta Business Support Home → WhatsApp account → Direct Send template updates → Available for review. Select the affected templates and choose Request review. Submit the request within 60 days of the notification. Each flagged template can be reviewed once. Track the result as In review, Reversed, or Unchanged. If the review option is unavailable, contact YCloud with the WABA ID, template name or ID, language, and notification details.Direct Send FAQ
Do I need a template name before sending?
Do I need a template name before sending?
No for custom content. Supply the complete message and let Meta match or generate a template. To convert an existing Utility template, supply its
template.name and set useDirectSend: true. The optional templateName field names a Utility Direct Send template; it does not select an existing template.Why does Direct Send still generate templates?
Why does Direct Send still generate templates?
Templates support category and quality checks, performance reporting, and troubleshooting. Direct Send removes the need to create them manually, not the template-based processing behind the message.
Can I send outside the 24-hour customer service window?
Can I send outside the 24-hour customer service window?
Yes, for eligible Utility Direct Send notifications. Your WABA must have access, the customer must expect the message, and the content must meet Utility requirements. Ordinary free-form service messages still require an open service window.
Why can a message succeed before its generated template appears?
Why can a message succeed before its generated template appears?
Template generation and synchronization are asynchronous and can finish after the message is sent. Once complete, select the correct WABA and use the Auto generated filter.
How are unused generated templates cleaned up?
How are unused generated templates cleaned up?
Meta deletes generated templates that have never been used for sending after 24 hours. Previously used templates can be archived after a period of inactivity. You do not need to delete them manually.
Does setting utility guarantee that Meta will accept the category?
Does setting utility guarantee that Meta will accept the category?
No. Meta assesses the actual content. Remove promotional wording from Utility notifications, and use the review process if a genuine Utility message is incorrectly flagged.
How is Direct Send billed?
How is Direct Send billed?
Utility messages follow the same Utility-message pricing rules as manually created Utility templates. See WhatsApp pricing.

