{% extends "public/base_public.html" %} {% block title %}{{ _("ModuleDesk — Support Desk for PrestaShop Addons Sellers") }}{% endblock %} {% block head_extra %} {% endblock %} {% block body %} {# ══════════════════════════════════════════════════════════════ HERO ══════════════════════════════════════════════════════════════ #}
{# ══ Headline leads. Full width, centered, at the original scale. ══ #}
{{ _("Support desk · PrestaShop Addons sellers") }}
{# The positioning claim leads. 54 characters, so it is set a step down from V1's text-7xl and broken across three deliberate lines — at 7xl it runs to four lines and swamps everything under it. #}

{% trans %}The message system the Addons marketplace should have had.{% endtrans %}

{# The old H1, demoted to the promise beneath the claim. #} {# max-w-4xl, not 3xl: at semibold 24px the sentence needs ~780px and was breaking after "Make fewer". #}

{{ _("Answer faster. Make fewer mistakes. Work in any language.") }}

{% trans %}ModuleDesk translates the ticket, drafts the reply from cases you've already solved, and confirms it answers every question — before you send.{% endtrans %}

{# Value prop chips #}
{{ _("Dual translation — inbound & outbound") }} {{ _("AI draft from your past tickets & docs") }} {{ _("Quick replies & saved credentials") }} {{ _("Attach latest module ZIP in one click") }} {{ _("Smart priority — always know what to open next") }} {{ _("Paste images directly into the reply editor") }}
{# CTA #}
{{ _("Start 30-day free trial") }} {{ _("No credit card. Auto-downgrades to Free.") }}

{% trans %}Premium at €59/mo — less than one module sale a month. The question isn't how many tickets you get, but how long each one takes.{% endtrans %}

{# ══ Supporting product shot, beneath the headline ══ #}
A {{ _("ModuleDesk drafts the reply") }}
{{ _("1 · ticket arrives") }} {{ _("2 · translate") }} {{ _("3 · draft") }} {{ _("4 · verify") }} {{ _("5 · reply in Spanish") }}

{% trans %}Schematic view representing the app's functionality. The real interface may differ in layout and styling — the features and the results they produce are the same.{% endtrans %}

{# ══════════════════════════════════════════════════════════════ THE PROBLEM (concrete pain) ══════════════════════════════════════════════════════════════ #}

{{ _("Prep") }}

{{ _("Addons support shouldn't take this many steps") }}

{{ _("Every reply starts with repetitive prep: translate the message, check the customer's order, find credentials, open their site, locate the latest module ZIP, search for the answer you sent last time.") }}

{{ _("Recall") }}

{{ _("Your best answers already exist") }}

{{ _("Hidden in a resolved ticket, a documentation page, a predefined message you wrote last year. ModuleDesk brings that into the reply instead of making you search again.") }}

{{ _("Precision") }}

{{ _("Small mistakes create extra conversations") }}

{{ _("A missed question, an unclear sentence, a wrong attachment — one imprecise reply turns into three. ModuleDesk helps you check the draft, improve the wording, and confirm every question is covered before you send.") }}

{# ══════════════════════════════════════════════════════════════ FEATURES ══════════════════════════════════════════════════════════════ #}

{# Reworded: the hero now owns "…should have had", and repeating it here would spend the line twice. #} {{ _("Built around how Addons support actually works") }}

{{ _("Every feature exists because a PrestaShop Addons seller loses time without it — not because a generic helpdesk happened to ship it.") }}

{# ── Feature: Unified inbox ── #}
{{ _("Inbox") }}

{{ _("Open ModuleDesk and immediately know which conversation needs your attention next") }}

{{ _("All your Addons threads — every 15 minutes on MAX, hourly on Premium, or on demand on Free — scored and sorted so the right ticket is always at the top. The scoring evaluates unread messages, waiting time, support status, pre-sale intent, complaint signals, and refund history. No manual triage.") }}

  • {{ _("Smart Priority (Critical / High / Normal / Low) — auto-assigned from multi-signal scoring, manually overrideable") }}
  • {{ _("AI intent badge on every ticket: bug, question, feature request, pre-sale, and more") }}
  • {{ _('"Next ticket" recommendation after every reply — quick mode or highest-priority mode') }}
  • {{ _("Per-ticket draft auto-saves as you type; AI checklist seeds things to verify before closing") }}
{# Inbox mockup — table-style, faithful to real app #}
{# Column header row #}
{{ _("Subject") }} {# product icon col #} {{ _("Status") }} {{ _("Priority") }} {{ _("Activity") }}
{# Row 1 — Critical, Open #}

{{ _("Module crashes at checkout on PS 8.1.5") }}

{{ _("Bug") }}
PM
{{ _("Open") }}
{{ _("Critical") }}
{{ _("6 days ago") }}
{# Row 2 — High, PreSale, unanswered #}

{{ _("Compatible with multistore setup?") }}

{{ _("Pre-sale") }}
DT
{{ _("Open") }}
{{ _("High") }}
{{ _("2 days ago") }}
{# Row 3 — Normal, Answered #}

{{ _("Delivery time display in checkout") }}

{{ _("Question") }}
ED
{{ _("Answered") }}
{{ _("Normal") }}
{{ _("1 day ago") }}
{# Row 4 — Low, Closed, dimmed #}

{{ _("Re: Access sent — waiting for credentials") }}

{{ _("Question") }}
SP
{{ _("Closed") }}
{{ _("Low") }}
{{ _("3 days ago") }}
{# Footer #}
{{ _("42 tickets · 8 unread") }} {{ _("Synced 4 min ago") }}
{# ── Feature: AI Composer ── #}
{# AI Composer mockup #}
{{ _("AI Reply Composer") }} {{ _("2 credits") }}
{% trans %}Hello,

Thank you for reporting this. The issue you're describing with PS 8.1.5 is caused by a hook conflict introduced in the platform update. Please follow these steps to resolve it: [...]

{% endtrans %} {{ _("Drafted from 3 similar resolved tickets + your docs") }}
{{ _("Draft answers all 3 customer questions") }}
{{ _("AI Composer") }}

{{ _("A better first draft, built from answers you already trust") }}

{{ _("Write Reply classifies the ticket, then uses your most relevant resolved tickets and documentation to prepare a reply that sounds like you — because it is grounded in how you've solved similar issues before. You review it, edit if needed, and send. Search works by meaning, not exact words.") }}

  • {% trans %}Write reply — draft a full reply from your resolved tickets and docs (Premium+){% endtrans %}
  • {% trans %}Proofread — fix grammar and meaning without restructuring (Premium+){% endtrans %}
  • {% trans %}Shorter — trim the draft without losing essential meaning (Premium+){% endtrans %}
  • {% trans %}Context — enrich with missing technical detail (Premium+){% endtrans %}
  • {% trans %}Check — verify the draft addresses every question the customer asked (Premium+){% endtrans %}
  • {% trans %}Translate — translate the reply into the customer's language (all plans){% endtrans %}
{# ── NEW: Small shortcuts section ── #}
{{ _("Workflow shortcuts") }}

{{ _("Support isn't slowed by one big task — it's slowed by ten small ones") }}

{{ _("ModuleDesk removes them one by one.") }}

{# Dual translation #}

{{ _("Translate both directions") }}

{{ _("Translate any inbound customer message into your language, and translate your reply into theirs — in one click each. All plans (1 credit).") }}

{# Attach latest module #}

{{ _("Attach the latest module in one click") }}

{{ _('Upload your module ZIP once. An "Attach module" button appears in every ticket toolbar for that product — click it, the current version is attached. Premium+.') }}

{# Paste images #}

{{ _("Paste screenshots directly into the editor") }}

{{ _("Copy a screenshot to your clipboard, paste it into the reply box — a preview dialog appears, confirm, and it becomes an attachment. No file picker needed.") }}

{# Auto-ZIP #}

{{ _("Multiple files sent as a single ZIP") }}

{% trans %}Attach two or more files and they're bundled automatically into attachments.zip before sending — no manual packaging. Premium+.{% endtrans %}

{# Quick replies #}

{{ _("Predefined quick replies") }}

{{ _('Save your best answers as quick replies — "please clear your cache," installation steps, compatibility notes. Insert any one into the editor with a single selection. All plans.') }}

{# Credential vault #}

{{ _("Saved credentials & one-click back office") }}

{{ _("Store encrypted back-office credentials per customer. When you need to log in to diagnose an issue, one click copies the password and opens the site. MAX plan.") }}

{# ── Feature: Customer context ── #}
{{ _("Customer Context") }}

{{ _("Know who you're talking to before you type a word") }}

{% trans %}Every ticket sidebar shows the customer's order history, total revenue, order count, and a value-segment badge (VIP / repeat / new). Add a private note that follows them across every ticket.{% endtrans %}

  • {{ _("Private notes per customer — your context, always visible in the sidebar") }}
  • {% trans %}Tags on each ticket — freeform labels like bug, checkout — shared across the team{% endtrans %}
  • {{ _("Ticket checklist — AI-seeded action items to verify before closing (Premium+)") }}
  • {{ _("Customer language, first seen, last activity, and product link in the Properties panel") }}
  • {{ _("Credential vault: encrypted, re-auth to reveal, one-click open of back-office (MAX)") }}
  • {{ _("Website health check + VirusTotal URL safety scan (MAX)") }}
{# Ticket sidebar mockup — faithful to real app #}
{# CREDENTIALS (collapsible panel) #}

{{ _("Credentials") }}

{{ _("Back Office") }}
{{ _("Copy & open") }}
{# NOTES #}

{{ _("Notes") }}

{{ _("Add a private note about this customer…") }}
{{ _("Save") }}
{# TAGS #}

{{ _("Tags") }}

bug checkout
bug, urgent, …
{{ _("Save") }}
{# CHECKLIST #}

{{ _("Checklist") }}

2/3
{# PROPERTIES #}

{{ _("Properties") }}

{{ _("Customer") }}

{{ _("Customer Language") }} EN
{{ _("First Seen") }} 2026-07-01
{{ _("Last Activity") }} 2026-07-01

{{ _("Product") }}

ED

Estimated Delivery Date V3

{{ _("View on Addons → Product page") }}
{# ── Feature: Review requests ── #}
{{ _("Review Requests") }}

{{ _("It spots the happy customers — the ones who'd actually leave a rating") }}

{% trans %}Good ratings come from customers you just helped, and that window is short. ModuleDesk reads every incoming reply: when someone thanks you on a ticket you actually solved, the ticket lands in its own Review Requests inbox with a banner on top. One click loads your predefined review message in the customer's language, with the product name already filled in. You read it and press send — semi-automatic on purpose.{% endtrans %}

  • {{ _("Two-pass detection: a thank-you is caught the moment it arrives, then AI intent classification confirms it — or silently clears a false positive") }}
  • {{ _('Only fires on tickets you replied to — a "thanks" on a thread nobody answered is never a review opportunity') }}
  • {% trans %}Ties into your predefined messages: the best match from your Review / Thank you category, picked by customer language, with {product_name} substituted{% endtrans %}
  • {{ _("Nothing is ever sent behind your back, and nothing is auto-closed — happy tickets stay unread and visible until you deal with them") }}
  • {% trans %}Not the right moment? "Not now" hides it, and it re-arms on the customer's next genuine thank-you. Available on all plans.{% endtrans %}
{# Review-request banner + composer mockup — faithful to the real ticket view #}
{# Sidebar nav item with live count #}
{{ _("Review Requests") }} 3
{# The banner #}

{{ _("Happy customer — time for a review request!") }}

{{ _("This customer thanked you after you solved their issue. A rating on Addons is worth asking for.") }}

{{ _("Load Review Request") }} {{ _("Not now") }}
{# Composer with the template loaded #}
ES {{ _("Predefined · Review request") }}

¡Me alegra que todo funcione! Si te ha sido útil, una valoración de Estimated Delivery Date V3 en Addons nos ayuda muchísimo…

{{ _("Send") }}
{# ── Feature row: 7 smaller features ── #}

{{ _("Search by meaning") }}

{{ _("Find any past ticket by what it says — not just by keywords. Useful when you remember the problem but not the exact words. Premium+.") }}

{% trans %}Guide generation Beta{% endtrans %}

{{ _("Clusters of resolved tickets with the same root cause become one-click documentation articles for your help site. Premium+.") }}

{{ _("Web Push notifications") }}

{{ _("Get desktop or mobile push alerts the moment a customer replies — even with no browser tab open. All plans.") }}

{{ _("Ticket checklists") }}

{{ _("AI seeds a checklist of things to verify on each ticket so nothing slips. AI-generated on Premium & MAX; manual on all plans.") }}

{{ _("Inline attachment preview") }}

{{ _("Preview images, PDFs and text attachments inline — zoom without downloading. Available on all plans.") }}

{{ _("Team support") }}

{{ _("Invite agents, assign roles (admin / agent), and keep per-user reply drafts and signatures separate. MAX plan.") }}

{{ _("Per-language reply signature") }}

{{ _("Set different signature text per language so your French customers see a French sign-off and your English ones see an English one — automatically. Premium+.") }}

{# ══════════════════════════════════════════════════════════════ WORKS WITH YOUR AI Several features exist so a ticket can leave the desk and land in whatever assistant the seller actually debugs with. ══════════════════════════════════════════════════════════════ #}
{{ _("Works with your AI") }}

{{ _("Built to hand the problem straight to the AI you already code with") }}

{% trans %}ModuleDesk uses AI inside the composer — but the bug still gets fixed in your editor. So several features exist purely to get a ticket out of the inbox and into Claude Code, Cursor, or whatever you debug with, without copy-pasting a thread by hand.{% endtrans %}

{{ _("Export the whole conversation as clean Markdown") }} MAX

{% trans %}One file, ready to paste in as context. Translations, auto-responses and reply signatures are stripped out, so the assistant reads the actual exchange and not three copies of your sign-off. Narrow it to a date range when a thread is long.{% endtrans %}

{{ _("Paste the credentials blob, get structured access") }} MAX

{% trans %}Customers send access as a wall of text — back office here, FTP there, a password on its own line. Paste it in and it's parsed into proper fields and saved against their site, creating the site if it didn't exist yet.{% endtrans %}

{{ _("Then one click into their back office") }} MAX

{% trans %}Copy the password and open the site in one action, so the gap between reading the bug and reproducing it is a click rather than a hunt through old messages.{% endtrans %}

ticket-1180914.md {{ _("exported") }}
{# notrimmed: this is a
 block, so the hand-placed line breaks are the
   layout. The default trimmed policy would collapse them into one long line. #}
{{ _("# Module breaks checkout on PS 8.1.5") }}
Ticket #1180914 · Estimated Delivery Date V3
PrestaShop 8.1.5 · {{ _("customer language: ES") }}

{{ _("## Customer") }} — 2026-08-05 09:12
{% trans notrimmed %}Hi, after updating to PS 8.1.5 the module
breaks checkout. Is there a compatible
version? Should I uninstall it first?{% endtrans %}

{{ _("## Support") }} — 2026-08-05 10:40
{% trans notrimmed %}Could you send the error from var/logs
right after the checkout fails?{% endtrans %}

{{ _("## Customer") }} — 2026-08-05 11:58
{{ _("Attached. It throws on the hook call:") }}
  PrestaShopException: Property
  Order::$id_carrier is empty
{# ══════════════════════════════════════════════════════════════ PRICING (compact) ══════════════════════════════════════════════════════════════ #}

{{ _("Simple, honest pricing") }}

{{ _("Start free. Upgrade when you need more.") }}

{# Founding-cohort note #}

{{ _("Founding Seller rate") }}

{% trans %}A small cohort of early Addons sellers can lock in a permanent founder discount in exchange for early feedback. If you'd like to be considered, get in touch.{% endtrans %}

{# Free #}

Free

€0 /mo

{{ _("For solo developers getting started") }}

  • {{ _("2 modules connected") }}
  • {{ _("1 user") }}
  • {{ _("~15 AI credits/month") }}
  • {{ _("Write Reply + Translation") }}
  • {{ _("Manual sync only") }}
  • {{ _("Web Push notifications") }}
{{ _("Start free") }}
{# Premium — highlighted #} {# MAX #}

MAX

€99 /mo

{{ _("For teams and high-volume sellers") }}

  • {{ _("Unlimited modules") }}
  • {{ _("Unlimited users + roles") }}
  • {{ _("~1000 AI credits + BYOK OpenAI") }}
  • {{ _("Credential vault (encrypted)") }}
  • {{ _("Website health + URL safety checks") }}
  • {{ _("Auto-sync every 15 minutes") }}
  • {{ _("Customer satisfaction ratings") }}
  • {{ _("Full audit log") }}
{{ _("Start 30-day free trial") }}

{{ _("Prices ex-VAT. B2B reverse charge applies to EU VAT-registered businesses.") }} {{ _("See full feature comparison →") }}

{# ══════════════════════════════════════════════════════════════ FINAL CTA ══════════════════════════════════════════════════════════════ #}
{{ _("Built exclusively for PrestaShop Addons sellers") }}

{% trans %}Spend less time on support. More time building and selling modules.{% endtrans %}

{{ _("ModuleDesk removes the repetitive work behind every Addons reply — translate messages, reuse proven answers, attach your latest module version, paste images, auto-package multiple files, and use AI to draft, improve, and verify before you send.") }}

{{ _("No credit card. Register with any email and connect with your Addons API key. Automatically downgrades to Free after your trial.") }}

{{ _("Start 30-day free trial") }}
{% endblock %} {% block body_scripts %} {% endblock %}