*{{1}}* is your verification code.
You can’t customize the body text, but you can:
- Add a security recommendation: “For your security, do not share this code.”
- Add code expiration: “This code expires in X minutes.”
OTP types
| Type | Button | Use case |
|---|---|---|
COPY_CODE | ”Copy code” | Universal - works on all devices |
ONE_TAP | ”Autofill” | Android only - auto-fills code in your app |
ZERO_TAP | None | Silent auto-fill, no user interaction needed |
Create copy code template
The most common type. Shows a “Copy code” button.Create one-tap template (Android)
Auto-fills the code in your Android app. Requires your app’s package name and signature hash.Get your Android app’s signature hash:
Create zero-tap template
No visible button. The code is broadcast to your app via Android’s SMS Retriever API.Send
When sending, pass the OTP code in both the body and button parameters.Component reference
Body
| Field | Type | Description |
|---|---|---|
add_security_recommendation | boolean | Adds “For your security, do not share this code.” |
Footer
| Field | Type | Description |
|---|---|---|
code_expiration_minutes | number | 1-90. Adds “This code expires in X minutes.” |
OTP button
| Field | Type | Description |
|---|---|---|
otp_type | string | COPY_CODE, ONE_TAP, or ZERO_TAP |
supported_apps | array | Required for ONE_TAP and ZERO_TAP. List of {package_name, signature_hash} |
Restrictions
- No headers - AUTHENTICATION templates cannot include HEADER components
- Fixed body text - Body text is generated by Meta, not customizable
- No custom parameters - Only the OTP code can be passed as a variable

