Skip to main content
Normally a business-initiated message needs a template that Meta approved in advance. With Direct Send, you send the message text directly and Meta creates the matching template behind the scenes. It suits order updates, delivery notices and login codes whose wording changes often.
Direct Send is a Meta programme, not something LazyApp can switch on. Utility messages are generally open to Meta businesses with a messaging limit of 100,000 or unlimited. Login codes are in beta and need an application to Meta. WhatsApp Manager shows a banner when your account is eligible.
LazyApp finds out from Meta’s answer. If Meta replies that Direct Send is not enabled, the send fails with a plain explanation and LazyApp marks Direct Send unavailable on that connection in capabilities. Marketing messages never qualify.

Send a utility message

The full field list is in the API reference.

Buttons and media headers

Utility messages can carry one of three kinds of buttons, with an optional text, image, video or document header:
Media links must be https. You can pass an uploaded media id instead of link. Meta also describes messages that mix a link button with reply buttons. It has not published that request format, so LazyApp does not offer it yet.

Login codes

Login code messages are text only, need a phone number rather than a business-scoped user ID, and allow at most 900 seconds. For a complete login flow with code checking, use Verify.

Generated templates

Each message creates or reuses a template. They appear on the Templates page and in GET /v1/templates after a sync, with source set. You cannot edit or delete them, because Meta owns them. Meta reviews generated templates after sending. If it finds marketing content in utility messages, it can block Direct Send for the account. Sends then fail with error 139200 or 131064, which LazyApp explains. Keep Direct Send to transactional messages.

Results

Turn on template results to see sends, deliveries and reads per generated template on the Templates page. Using template_name keeps related messages under one template, so their results add up.