Skip to main content

Limits

WhatsApp enforces strict limits on texts and components. SendSeven checks all of them when you validate or save a version, so you find out before WhatsApp rejects the flow.

A limit that is exceeded is reported as an issue:

{
"code": "component.label_too_long",
"path": "screens[0].components[1].label",
"message": "Label is 25 characters; Meta allows 20.",
"severity": "error"
}

Errors block pushing. Warnings are advice; the flow can still be pushed. Limits count characters, including spaces and umlauts (ü is one character).

Text lengths​

German texts are often longer than English ones, so the short labels are where most flows fail.

TextMaxToo longFits
Label of TextInput, TextArea, Dropdown20"Bevorzugter Rückruftermin" (25)"Rückruftermin" (13)
Label of RadioButtonsGroup, CheckboxGroup30"Welche Leistungen interessieren Sie?" (36)"Gewünschte Leistungen" (21)
Label of DatePicker, CalendarPicker40"Wunschtermin"
Option title30"Ich möchte den Newsletter erhalten" (34)"Newsletter erhalten" (19)
Option description300"Monatlich, jederzeit abbestellbar"
Option metadata20"ab 49 €"
OptIn label120"Ich möchte den Newsletter erhalten und akzeptiere die Datenschutzerklärung."
Helper text (inputs and pickers)80"z. B. 0171 2345678"
TextInput error message30"Bitte Nummer prüfen"
Date picker error message80
TextHeading, TextSubheading80"Rückruf vereinbaren"
TextBody4096
TextCaption409
EmbeddedLink text25"Unsere Datenschutzerklärung" (27)"Datenschutz" (11)
Footer label35"Absenden"
Footer captions (left/center/right)15"Schritt 2 von 3"
PhotoPicker, DocumentPicker label80"Foto der Rechnung"
CalendarPicker title80
Group or picker description300
Button text (meta.cta, cta on send)30 (warning above 20)"Jetzt Rückruf vereinbaren und Termin wählen" (43)"Formular öffnen" (15)
Screen title30 (warning)"Ihre Kontaktdaten"
ChipsSelector label80 (warning)

Codes: component.label_too_long, component.option_too_long, component.helper_too_long, component.text_too_long, meta.cta_too_long (error) and meta.cta_long, screen.title_long (warnings).

A TextArea without max-length accepts 600 characters.

Counts​

LimitMaxCode
Screens per flow100flow.too_many_screens
Components per screen (including those inside If/Switch)50screen.too_many_components
Image per screen3screen.too_many_images
ImageCarousel per screen / per flow2 / 3screen.too_many_image_carousels, flow.too_many_image_carousels
Images per ImageCarousel3component.option_count
OptIn per screen5screen.too_many_optins
EmbeddedLink per screen2screen.too_many_links
Footer per screen1screen.too_many_footers
PhotoPicker or DocumentPicker per screen1 (in total)screen.too_many_media_pickers
If/Switch nesting3 levelscomponent.if_too_deep
Routes from one screen10routing.too_many_routes
Upload size per file (max_file_size_kb)25,600 KB
Files per media picker30

The screen id SUCCESS is reserved by WhatsApp.

Options​

ComponentOptions
RadioButtonsGroup1–20
CheckboxGroup1–20
Dropdown1–200 (1–100 if any option has an image)
ChipsSelector2–20
NavigationList1–20 items

Too few or too many options give component.option_count.

Options that come from screen data ("options": "${data.services}") are not known when you save the flow. Make sure your data source returns option lists and titles within these limits; for example cut a list of 35 appointment slots down to 20 for a RadioButtonsGroup, or use a Dropdown.

Tips for German flows​

  • Put the explanation in a TextBody or the helper text and keep the label short: label "Rückruftermin", helper text "Wann dürfen wir Sie anrufen?".
  • Use the option description (300 characters) for detail and keep the title to a few words.
  • Prefer "Sie" forms that are short: "Absenden" instead of "Formular jetzt absenden".
  • Use AI generation: it writes texts within these limits and repairs its own overruns.