🆕 2026 Business Tool

WhatsApp Business
Template Pre-Checker

Last updated: · alltoolscombined.com

What is the WhatsApp Business Template Checker?

The WhatsApp Business Template Checker validates your WhatsApp Business message templates against Meta's 2026 approval rules before you submit them. It checks 27 criteria, gives a score out of 100, identifies blocking issues and warnings, and estimates per-message cost across major regions.

47% of WhatsApp Business templates are rejected by Meta on first submission. Paste yours here — we check it against Meta's current 2026 approval rules in seconds, before you submit.

47%
Average rejection rate
24h+
Lost per rejection
27
Reasons Meta rejects
$0
Cost to use this tool
✅ Meta Rules 2026 🔍 27 Rejection Checks 📊 Category Classifier 💰 Cost Estimator 🔒 100% Private
📝 Your Template Content

Marketing = promotions/offers. Utility = order updates, alerts, confirmations. Authentication = OTP/login codes.

0 / 60
0 / 1024
0 / 60

Provide one sample value per {{variable}} in your body, comma-separated. Meta rejects templates without sample values.

⚠️ Issues Found
🚀 What to Do Next
💰 Cost Estimate (July 2025 Per-Message Pricing)

Related Tools

🔗

WhatsApp Link Generator

Create click-to-chat links & QR codes for your business
🔐

Export Integrity Checker

Verify WhatsApp export for legal submissions
🔏

Chat Anonymizer

Redact names before sharing chat exports
📄

Chat to PDF Converter

Convert WhatsApp export to beautiful PDF

📖 From Our Blog

🏢 Business Records Guide 🔒 Why Browser-Based is Safer
// ── Template PDF Report ───────────────────────────────────── let LAST_TEMPLATE = {}; function downloadTemplatePDF() { const {jsPDF} = window.jspdf; if (!jsPDF) { alert('PDF library loading, please try again.'); return; } const d = LAST_TEMPLATE; if (!d.body) { alert('Please run the check first.'); return; } const doc = new jsPDF({unit:'mm', format:'a4'}); const PW=210, PH=297, ML=16, MR=16, MT=20, MB=16; const CW = PW-ML-MR; let y=MT, pg=1; function drawHdr() { doc.setFillColor(30,64,175); doc.rect(0,0,PW,13,'F'); doc.setFillColor(7,94,84); doc.rect(0,10,PW,3,'F'); doc.setTextColor(255,255,255); doc.setFont('helvetica','bold'); doc.setFontSize(8.5); doc.text('WhatsApp Business Template Check Report — alltoolscombined.com', ML, 9); doc.setFont('helvetica','normal'); doc.setFontSize(7); doc.text('Page '+pg, PW-MR, 9, {align:'right'}); } function drawFtr() { doc.setTextColor(180,180,180); doc.setFont('helvetica','normal'); doc.setFontSize(6); doc.text('alltoolscombined.com · WhatsApp Business Template Checker · Based on Meta template guidelines 2025–2026', PW/2, PH-5, {align:'center'}); } function needY(h) { if(y+h>PH-MB-10){drawFtr();doc.addPage();pg++;y=MT;drawHdr();} } drawHdr(); // Score header const sc = d.score||0; const scoreCol = sc>=80?[22,163,74]:sc>=50?[217,119,6]:[220,38,38]; doc.setFillColor(248,250,252); doc.roundedRect(ML,y,CW,42,3,3,'F'); doc.setDrawColor(229,231,235); doc.roundedRect(ML,y,CW,42,3,3,'S'); doc.setFillColor(...scoreCol); doc.circle(ML+14,y+21,12,'F'); doc.setTextColor(255,255,255); doc.setFont('helvetica','bold'); doc.setFontSize(14); doc.text(String(sc), ML+14, y+26, {align:'center'}); doc.setTextColor(17,24,39); doc.setFont('helvetica','bold'); doc.setFontSize(12); doc.text('WhatsApp Business Template Check Report', ML+32, y+12); doc.setFont('helvetica','normal'); doc.setFontSize(8.5); doc.setTextColor(55,65,81); doc.text('Score: '+sc+'/100 · Category: '+(d.cat||'').charAt(0).toUpperCase()+(d.cat||'').slice(1), ML+32, y+20); doc.text('Generated: '+new Date().toLocaleString('en-GB'), ML+32, y+27); doc.text('Blocking issues: '+(d.blocking||0)+' · Warnings: '+(d.warnings||0)+' · Passing: '+(d.passing||0), ML+32, y+34); y+=48; // Template content needY(8); doc.setFillColor(239,246,255); doc.roundedRect(ML,y,CW,8,2,2,'F'); doc.setTextColor(30,64,175); doc.setFont('helvetica','bold'); doc.setFontSize(9); doc.text('TEMPLATE CONTENT', ML+4, y+5.5); y+=11; const fields = [ ['Category', (d.cat||'').charAt(0).toUpperCase()+(d.cat||'').slice(1)], ['Header', d.header||'(none)'], ['Footer', d.footer||'(none)'], ['Buttons', d.buttons||'(none)'], ]; fields.forEach((r,i) => { needY(7); const bg = i%2===0?[249,250,251]:[255,255,255]; doc.setFillColor(...bg); doc.rect(ML,y-5,CW,7,'F'); doc.setTextColor(107,114,128); doc.setFont('helvetica','normal'); doc.setFontSize(8); doc.text(r[0]+':', ML+3, y); doc.setTextColor(17,24,39); doc.setFont('helvetica','normal'); const wrapped = doc.splitTextToSize(String(r[1]), CW-50); doc.text(wrapped[0].substring(0,60), ML+35, y); y+=7; }); // Body text needY(16); doc.setFillColor(249,250,251); doc.rect(ML,y,CW,14,'F'); doc.setDrawColor(229,231,235); doc.rect(ML,y,CW,14,'S'); doc.setTextColor(107,114,128); doc.setFont('helvetica','bold'); doc.setFontSize(7.5); doc.text('Body:', ML+3, y+5); doc.setTextColor(17,24,39); doc.setFont('helvetica','normal'); doc.setFontSize(8); const bodyLines = doc.splitTextToSize(d.body||'', CW-20); bodyLines.slice(0,1).forEach((l,i) => doc.text(l, ML+3, y+11+i*4)); if (bodyLines.length > 1) doc.text('... ('+String(d.body||'').length+' chars total)', ML+3, y+11+4); y+=18; // Issues if (d.issues && d.issues.length) { needY(10); doc.setFillColor(239,246,255); doc.roundedRect(ML,y,CW,8,2,2,'F'); doc.setTextColor(30,64,175); doc.setFont('helvetica','bold'); doc.setFontSize(9); doc.text('ISSUES FOUND ('+(d.issues.length)+')', ML+4, y+5.5); y+=11; d.issues.forEach((iss,i) => { const lvlCol = iss.level==='block'?[220,38,38]:iss.level==='warn'?[217,119,6]:iss.level==='pass'?[22,163,74]:[59,130,246]; const lvlBg = iss.level==='block'?[254,242,242]:iss.level==='warn'?[255,251,235]:iss.level==='pass'?[240,253,244]:[239,246,255]; const titleLines = doc.splitTextToSize(iss.icon+' '+iss.title, CW-8); const descLines = doc.splitTextToSize(iss.desc, CW-12); const boxH = (titleLines.length * 5) + (descLines.length * 4) + 10; needY(boxH); doc.setFillColor(...lvlBg); doc.roundedRect(ML,y,CW,boxH,2,2,'F'); doc.setDrawColor(...lvlCol); doc.setLineWidth(0.5); doc.roundedRect(ML,y,CW,boxH,2,2,'S'); doc.setLineWidth(0.2); doc.setTextColor(...lvlCol); doc.setFont('helvetica','bold'); doc.setFontSize(8); titleLines.forEach((l,li) => doc.text(l, ML+4, y+6+li*5)); doc.setTextColor(55,65,81); doc.setFont('helvetica','normal'); doc.setFontSize(7.5); descLines.forEach((l,li) => doc.text(l, ML+6, y+6+(titleLines.length*5)+li*4)); y += boxH+4; }); } // Cost table needY(50); doc.setFillColor(239,246,255); doc.roundedRect(ML,y,CW,8,2,2,'F'); doc.setTextColor(30,64,175); doc.setFont('helvetica','bold'); doc.setFontSize(9); doc.text('PER-MESSAGE COST ESTIMATE (Meta July 2025 Pricing)', ML+4, y+5.5); y+=11; const cat = d.cat||'utility'; const costs = {marketing:{india:'~$0.011',uk:'~$0.040',us:'~$0.025',pak:'~$0.009'}, utility:{india:'~$0.004',uk:'~$0.014',us:'~$0.009',pak:'~$0.003'}, authentication:{india:'~$0.003',uk:'~$0.010',us:'~$0.007',pak:'~$0.002'}}; const c2 = costs[cat]||costs.utility; const costRows = [['Region','Per Message','1,000 Messages','10,000 Messages'], ['India', c2.india, '$'+(parseFloat(c2.india.replace('~$',''))*1000).toFixed(2), '$'+(parseFloat(c2.india.replace('~$',''))*10000).toFixed(2)], ['Pakistan', c2.pak, '$'+(parseFloat(c2.pak.replace('~$',''))*1000).toFixed(2), '$'+(parseFloat(c2.pak.replace('~$',''))*10000).toFixed(2)], ['UK', c2.uk, '$'+(parseFloat(c2.uk.replace('~$',''))*1000).toFixed(2), '$'+(parseFloat(c2.uk.replace('~$',''))*10000).toFixed(2)], ['US', c2.us, '$'+(parseFloat(c2.us.replace('~$',''))*1000).toFixed(2), '$'+(parseFloat(c2.us.replace('~$',''))*10000).toFixed(2)], ]; const cw4 = CW/4; costRows.forEach((row,ri) => { needY(7); const bg = ri===0?[30,64,175]:ri%2===0?[249,250,251]:[255,255,255]; doc.setFillColor(...bg); doc.rect(ML,y-5,CW,7,'F'); row.forEach((cell,ci) => { doc.setTextColor(ri===0?255:55, ri===0?255:65, ri===0?255:81); doc.setFont('helvetica', ri===0||ci===0?'bold':'normal'); doc.setFontSize(8); doc.text(String(cell), ML+ci*cw4+3, y); }); y+=7; }); drawFtr(); doc.save('WhatsApp-Template-Check-Report.pdf'); } // Initialize setCategory('utility');