Stories — ZENTRO
Stories para barberías
story

Mantén pulsada la imagen

Toca "Guardar en Fotos" y luego pulsa Siguiente
Antes de generar
Confirma que tienes todo listo
Pulsa cada cuadro para marcarlo como hecho
Misiones activadas con sus puntos
Panel → Puntos y premios → Misiones
Catálogo de premios configurado
Panel → Puntos y premios → Premios
Reglas de puntos revisadas
Panel → Puntos y premios → Configurar
Racha configurada si la quieres mostrar
Panel → Puntos y premios → Racha
0 de 4 completados
Conectando con tu barbería...
Color principal
+
Estilo de fuente
Minimalista
Moderna
Barbería
Elegante
Premium
Tema
'; }/* ── Micro-components ── */ function TAG(txt){ var c=C(); return '
'+txt+'
'; } function PILL(label,val){ var c=C(); return '
' +''+label+'' +''+val+'' +'
'; } function STEP(n,title,sub){ var c=C(); return '
' +'
' +''+n+'
' +'
'+title+'
' +'
'+sub+'
' +'
'; } function DIV(){ var c=C(); return '
'; }function buildStories(s){ var c=C(); var ppu = Number(s.pts_per_euro)||10; var ticket = {budget_10:10,standard_15:15,mid_20:20,premium_25:25}[s.ticket_model]||15; var sd = Number(s.streak_expiry_days)||50; var wu = s.web_url||''; var rewards= Array.isArray(s.rewards)?s.rewards:[];/* Misiones activas */ var mDefs=[ ['pts_review', 'Reseña en Google'], ['pts_story', 'Historia en Instagram'], ['pts_referral', 'Traer un amigo'], ['pts_follow_instagram', 'Seguir en Instagram'], ['pts_birthday', 'Tu cumpleaños'], ['pts_complete_profile', 'Completar tu perfil'] ]; var activeMissions=mDefs.filter(function(m){ return (Number(s[m[0]])||0)>0; }); (s.custom_missions||[]).filter(function(m){ return Number(m.pts)>0; }) .forEach(function(m){ activeMissions.push([m.name,m.name,true,m.pts]); });/* Racha */ var sl=[ {v:3, b:Number(s.streak_bonus_3) ||10}, {v:6, b:Number(s.streak_bonus_6) ||20}, {v:12, b:Number(s.streak_bonus_12)||50} ];/* ───────────────────────────────────────────────────────── STORY 1 — HOOK: instala la app Objetivo: que el cliente entienda desde el primer segundo que tiene una app gratuita esperándole, y que se quede hasta el último paso para ver el enlace. ───────────────────────────────────────────────────────── */ var s1=shell( '
'/* Decorativo fondo */ +'
'+'
' +TAG('Tu app gratuita')/* Headline principal */ +'
' +'Instala ya
tu app
' +'y gana
puntos.
' +'
'+'
'+'
' +'Cada corte suma puntos. Canjéalos
por premios de verdad. Sin coste.' +'
'/* Card tease — crea motivo para ver hasta el final */ +'
' +'
' +'
App gratuita
' +'
El enlace directo
está en el último paso
' +'
Sigue viendo las stories →
' +'
' +'
' +'' +'
' +'
'+'
' +'
', s.shop_name );/* ───────────────────────────────────────────────────────── STORY 2 — CÓMO FUNCIONA (3 pasos) ───────────────────────────────────────────────────────── */ var s2=shell( '
' +TAG('Cómo funciona') +'
' +'En 3 pasos.' +'
' +'
' +STEP(1,'Reserva y ven','Por la app, web o WhatsApp') +DIV() +STEP(2,'Ganas puntos','Se suman solos al pagar tu corte') +DIV() +STEP(3,'Canjea tu premio','Cuando quieras, desde la app') +'
' +'
', s.shop_name );/* ───────────────────────────────────────────────────────── STORY 3 — LA REGLA DEL EURO ───────────────────────────────────────────────────────── */ var exPts=ticket*ppu; var s3=shell( '
' +TAG('La regla')/* Ecuación grande */ +'
' +'
' +'1' +'' +'
' +' = ' +'
' +''+ppu+'' +'
' +'
' +'
puntos
'+'
'/* Ejemplo */ +'
' +'
Ejemplo
' +'
' +'Corte de '+ticket+'€'+exPts+' puntos' +'
' +'
'+'
', s.shop_name );/* ───────────────────────────────────────────────────────── STORY 4 — MISIONES ───────────────────────────────────────────────────────── */ var mRows=activeMissions.slice(0,6).map(function(m){ var pts=m[2]===true ? m[3] : (Number(s[m[0]])||0); var lbl=m[1]; return PILL(lbl,'+'+pts+' pts'); }).join(''); if(!mRows) mRows=PILL('Completa tu perfil','+150 pts')+PILL('Reseña en Google','+200 pts');var s4=shell( '
' +TAG('Misiones') +'
' +'Gana puntos
sin gastar.' +'
' +'
Haz misiones y suma puntos extra
' +'
'+mRows+'
' +'
', s.shop_name );/* ───────────────────────────────────────────────────────── STORY 5 — RACHA ───────────────────────────────────────────────────────── */ /* Tamaño uniforme para los 3 porcentajes — nowrap + fuente que cabe sin desbordar */ var sCards=sl.map(function(l){ return '
' +'
'+l.v+' visitas
' +'
+'+l.b+'%
' +'
extra
' +'
'; }).join('');var s5=shell( '
' +TAG('Racha de visitas') +'
' +'Cuanto más
vengas, más
ganas.' +'
' +'
'+sCards+'
' +'
' +'Racha se reinicia si pasas ' +''+sd+' días' +' sin visita' +'
' +'
', s.shop_name );/* ───────────────────────────────────────────────────────── STORY 6 — PREMIOS + CTA ───────────────────────────────────────────────────────── */ var rBlock=''; if(rewards.length>0){ rBlock=rewards.slice(0,3).map(function(r){ return PILL(r.name,r.pts_cost+' pts'); }).join(''); if(rewards.length>3) rBlock+='
+ '+(rewards.length-3)+' premios más en la app
'; }else{ rBlock='
' +'
Descuentos, servicios gratis
y mucho más.
' +'
'; }var panelUrl=(wu?wu+'/panel-del-cliente':'tu web /panel-del-cliente');/* ── helpers mini-guide ── */ function MSTEP(n,main,sub){ return '
' +'
' +''+n+'
' +'
'+main+'
' +(sub?'
'+sub+'
':'') +'
'; } function MDIV(){ return '
'; }var s6=shell( '
' +TAG('Último paso') +'
' +'Descarga
tu app
gratis.' +'
'/* Zona donde el barbero añade el link sticker de Instagram */ +'
' +'
' +'
Enlace de la app
' +'
Toca el botón que
el barber pone aquí
' +'
↑ sticker de enlace en Instagram
' +'
' +'
' +'' +'
' +'
'/* Mini guía instalación */ +'
Cómo instalar la app:
' +'
' +MSTEP(1,'Toca el enlace','Se abre la web en tu móvil') +MDIV() +MSTEP(2,'iPhone: Compartir → Añadir a inicio','Android: menú ⋮ → Instalar') +MDIV() +MSTEP(3,'Toca Añadir — ¡listo!','Ya tienes la app instalada') +'
'/* URL pequeña para referencia del barbero */ +'
'+panelUrl+'
' +'
', s.shop_name );return [s1,s2,s3,s4,s5,s6]; }