Home/Help Center/Media and samples

Templates

Media Headers and Sample Values

File types and size limits for image, video and document template headers, and why every variable needs a realistic sample value before Meta will review it.

By Chirag Darji · Updated 27 Aug 2026 · 5 min read

On this page
  1. Before you start
  2. Steps
  3. What you will see
  4. Settings and options
  5. Troubleshooting
  6. Related reading
WhatsApp approved message template library in VGraple CRM

An image, video or document template header needs an uploaded file that meets Meta's own format and size limits, and every variable in the body or header needs a realistic sample value before Meta will review it at all. Both are common, easily fixed causes of a first-template rejection.

Media and samples: first 5 of 6 steps

  1. 1Choose a media header type
  2. 2Upload the file
  3. 3Submit without a header sample for a
  4. 4For a text header with a variable,
  5. 5Enter a sample for every body variable
The steps on this page, in order.

Before you start

  • You need "Submit templates to Meta" permission to upload a header file.
  • Only Image, Video and Document header types require a file upload; Text headers use plain text, and Location and None headers need nothing here.
  • A media header cannot contain a variable at all, since a file has nothing for a placeholder to substitute into; only a Text header supports one variable.

Steps

  1. Choose a media header type. In the header type picker, select Image, Video or Document. A file picker appears where the text header field would otherwise be.

Templates screen in VGraple CRM with the gallery, Meta library and sync options

  1. Upload the file. The file is checked against its actual bytes, not just the browser's claimed file type, before it is accepted. On success, the upload returns two things behind the scenes: a Meta upload handle used only for review, and a public link to the same file hosted separately, which is what an actual send later attaches to the message.

  2. Submit without a header sample for a media header. Unlike a text header, a media header never asks for a sample value, since the file itself is what Meta reviews.

  3. For a text header with a variable, enter its own sample. A text header can carry at most one variable, and it needs its own sample value, entered separately from the body's samples, since Meta reviews the header on its own example content.

  4. Enter a sample for every body variable. Below the body editor, one input appears per {{n}} variable used. Every one must have a value before you can submit; the builder will not let you skip this.

  5. Write a realistic example, not a placeholder. "Sarah," "ORD-20891" or "Saturday, 14 June" pass review far more reliably than "test," "value1" or "xxx," which Meta specifically watches for and can reject with a message-mismatch reason since a reviewer cannot judge a template from placeholder text.

What you will see

The live phone preview substitutes your sample values into the message as you type, so you see exactly what a reviewer, and later a real recipient, would see with realistic data in place of each variable. A template submitted without a required sample is blocked locally before it ever reaches Meta, with the validator naming the specific missing field.

Settings and options

Header typeAccepted formatsSize limitVariable allowed
ImageJPEG, PNG5 MBNo
VideoMP4, 3GPP16 MBNo
DocumentPDF100 MBNo
TextPlain text60 charactersYes, at most 1, with its own sample value
LocationFixed map pinNot applicableNo
Setting or fieldWhat it doesDefault
---------
Header samplesSample value(s) for a text header's variable, stored separately from body samplesRequired when a text header has a variable
Body samplesOne sample value per {{n}} variable in the bodyRequired for every body variable before submission
Upload handleMeta's resumable-upload reference, used only for the review processGenerated automatically on upload
Hosted media URLA public link to the same uploaded file, used when the template is actually sentGenerated automatically alongside the handle

Troubleshooting

SymptomLikely causeFix
File picker rejects a WebP imageMeta does not accept WebP for a template header, only JPEG and PNGConvert the image to JPEG or PNG before uploading
"Upload the header file before submitting"An Image, Video or Document header type is selected but no file was uploadedUpload a file, or switch the header type to None or Text if you do not need one
Upload fails with a size-related errorThe file exceeds the limit for its type (5 MB image, 16 MB video, 100 MB document)Compress or re-export the file under the limit
"Template has [n] variable(s) but only [m] sample value(s) provided"One or more body variables have no sample enteredEnter a sample value for every {{n}} variable before submitting
Rejected with a message-content mismatch reasonSample values look like placeholders (test, xxx, value1) rather than realistic contentReplace them with realistic examples: a real-sounding name, order number or date
Approved image-header template fails to sendThe public hosted link for the uploaded file was not saved alongside the review handleRe-upload the header file through the builder so both the handle and the hosted link are stored

For the full set of rules each component follows, see headers, body, footer, buttons and carousel, and for what the validator's exact messages mean when a sample or format check fails, see what each validator message means.

Frequently asked questions

What file types can a template header accept?
JPEG or PNG for an image header, MP4 or 3GPP for a video header, and PDF for a document header. Meta does not accept WebP for a template header, even though it is a common web image format.
What are the file size limits?
5 MB for an image header, 16 MB for a video header, and 100 MB for a document header.
Why does a variable need a sample value at all?
Meta's reviewer cannot judge whether "Hi {{1}}" makes sense without seeing what {{1}} will actually contain. A missing sample is one of the most common, and most avoidable, causes of a first-template rejection.
Can I reuse the same sample text for every variable, like "test" or "value1"?
No, and Meta specifically watches for this. Placeholder-looking samples like value1 or test read as an incomplete submission and can be rejected with TAG_CONTENT_MISMATCH. Use a realistic example: a real-sounding name, an order number, a date.
Are header samples the same as body samples?
No, they are entered and stored separately. A header variable needs its own sample value; giving it the body's first sample was a real defect this product had, since a header variable is reviewed on its own example, not the body's.
What happens to the uploaded file after the template is approved?
Two things are kept, a Meta upload handle used only for review, and a public link to the same file hosted separately, which is what an actual send later attaches. A template approved without the public link stored cannot be sent even though it is approved.

Run your WhatsApp on VGraple CRM

Free forever plan, official Meta WhatsApp Business API, set up in 15 minutes. No card needed.