Saltar al contenido principal

Apps por tema — addons[] en theme.json

Un tema declara qué apps/módulos (addons) trae. Al activar el tema, esos addons se activan automáticamente para la tienda —respetando el plan— y se notifica al usuario qué quedó activado.

Dónde se declara

En el theme.json de la raíz del ZIP del tema:

{
"name": "Peluquería Pro",
"base_theme": "dawn",
"industry": "peluqueria",
"addons": [
{ "id": "hair-tryon", "enabled_by_default": true,
"config": { "accent_color": "#C46B8A" } },
{ "id": "reviews", "enabled_by_default": true },
{ "id": "booking", "enabled_by_default": false }
]
}

Campos de cada entrada

CampoTipoDescripción
idstringObligatorio. Debe existir en el catálogo de addons (ver tabla abajo).
enabled_by_defaultbooltrue: se activa al seleccionar el tema (si el plan lo permite). false: solo se sugiere.
configobjetoOpcional. Valores iniciales del addon (se combinan sobre los defaults).

Qué pasa al activar el tema

Cada addon declarado se clasifica en:

  • Activadaenabled_by_default: true y el plan de la tienda alcanza el min_plan.
  • Sugeridaenabled_by_default: false, o el usuario ya la había desactivado a mano (nunca se pisa una decisión manual).
  • Bloqueada — el tema la quiere prendida pero el plan es inferior a su min_plan (aparece como sugerencia de upgrade).

La activación es idempotente: reactivar el tema no vuelve a tocar addons que el usuario ya configuró.

Validación al subir el ZIP

El validador lee theme.json y comprueba cada addons[].id contra el catálogo. Un id inexistente rechaza la subida con el error THEME_JSON_ADDON_UNKNOWN.

Catálogo de addons (IDs válidos)

Estos son los id que puedes usar en addons[]. El min_plan define el plan mínimo para activarlo; los rubros indican para qué industrias está pensado.

idNombremin_planRubros sugeridos
gift-deliveryRegalos y Entregas Programadasstarterflorerias, desayunos_sorpresa, comida_bebidas, ninos
tryon-arProbador ARgrowthopticas, joyeria, cuidado_personal
ar-spaceVisualizador 3D / AR en Espaciogrowthhogar_decoracion, tecnologia, arte_hecho_a_mano
product-configuratorConfigurador de Productogrowthjoyeria, opticas, tecnologia, hogar_decoracion
personalizationPersonalización / Print-on-demandstarterdeportes, ninos, joyeria, arte_hecho_a_mano, comida_bebidas
subscriptionsSuscripciones y Reposicióngrowthcomida_bebidas, cuidado_personal, mascotas
bookingAgenda y Reservasgrowthmascotas, restaurantes, deportes
quizQuiz / Recomendadorstartercuidado_personal, mascotas, tecnologia, moda, deportes
size-fitTallas y Fitfreemoda, deportes, ninos
digital-catalogCatálogo Digitalstartercursos_digital
unique-piecePieza Única / Bajo Pedidostarterarte_hecho_a_mano, joyeria
profiles-remindersPerfiles y Recordatoriosgrowthmascotas, ninos, florerias
reviewsReseñas con Fotofree
complaintsLibro de Reclamacionesfree
b2b-quotesCotizaciones B2Bgrowth
abandoned-cartsRecuperación de Carritosgrowth
loyaltyPrograma de Lealtadgrowth
hair-tryonProbador de Color de Cabellogrowthcuidado_personal, belleza, peluqueria
Fuente

Este catálogo se define en el código en internal/addons/registry.go (variable Registry). Si agregas un addon nuevo al registry, actualiza también esta tabla.

Ejemplo mínimo por rubro

// Tema de óptica
{
"name": "Óptica Visión",
"base_theme": "dawn",
"industry": "opticas",
"addons": [
{ "id": "tryon-ar", "enabled_by_default": true },
{ "id": "reviews", "enabled_by_default": true },
{ "id": "size-fit", "enabled_by_default": false }
]
}