{"id":161,"date":"2026-10-04T12:29:04","date_gmt":"2026-10-04T11:29:04","guid":{"rendered":"https:\/\/arrowlancer.ma\/blog\/?p=161"},"modified":"2026-10-04T12:29:04","modified_gmt":"2026-10-04T11:29:04","slug":"custom-web-application-morocco-cost-2026","status":"publish","type":"post","link":"https:\/\/arrowlancer.ma\/blog\/en\/custom-web-application-morocco-cost-2026\/","title":{"rendered":"Custom Web Application Morocco 2026: Cost and Timeline"},"content":{"rendered":"<p>The request usually arrives in the same words: &#8220;we&#8217;d like a quote to redo our website.&#8221; A few questions in, the real problem turns out to sit somewhere else. The brochure site exists and it does its job. What hurts is the shared Excel file where four sales reps log their visits, the three versions of the same sheet circulating on WhatsApp, and the quotes retyped by hand into a Word template.<\/p>\n<p>That is not a website project. It is a business application project. The two differ in scope, in budget and in risk. A brochure site that goes down on a Sunday evening is annoying. An internal CRM that loses a week of entries stops a sales team.<\/p>\n<p>The mix-up distorts the estimate before anyone writes a line of code, and it explains a good share of projects that end in change orders.<\/p>\n<h2>What a custom business web app actually covers<\/h2>\n<p>A brochure site publishes content and collects form submissions. A business web application runs a process: identified users, roles, records that move through states, and rules that decide what is allowed, for whom, and when. None of that shows up on a mockup, and it carries most of the build effort.<\/p>\n<p>On a CRM, a client portal or a booking platform, the work spreads across pieces a brochure site never has:<\/p>\n<ul>\n<li><strong>The data model<\/strong>: client, visit, quote, time slot, invoice, how they relate and what history you keep. A mistake here is paid for over the tool&#8217;s whole life.<\/li>\n<li><strong>Accounts and permissions<\/strong>: a rep sees their own clients, a manager sees the team, an admin can correct records. Every extra role adds screens and tests.<\/li>\n<li><strong>Rules and edge cases<\/strong>: two clients booking the same slot in the same second, an approved quote that gets edited, a cancellation after invoicing.<\/li>\n<li><strong>Integrations<\/strong>: accounting software or ERP, CMI payments, SMS, transactional email, exports for your accountant.<\/li>\n<li><strong>Operations<\/strong>: a staging environment separate from production, backups you have actually restored once, an audit log of actions.<\/li>\n<li><strong>Migrating what exists<\/strong>: years of spreadsheets to clean, deduplicate and import. This is the line item most often underestimated.<\/li>\n<\/ul>\n<p>Against SaaS, the difference is strategic rather than technical. A subscription hands you 80% of a standard process immediately, along with limits you will not move. Building custom makes sense when the process is part of what sets you apart, or when a local constraint falls outside the vendor&#8217;s scope. If the need turns out to be an online presence with forms, the budget markers for a <a href=\"https:\/\/arrowlancer.ma\/blog\/en\/morocco-website-development-pricing-2026\/\">professional website in Morocco<\/a> sit in a completely different range.<\/p>\n<h2>Custom web application Morocco pricing: the 2026 ranges<\/h2>\n<p>Cost here is almost entirely person-days. On the Moroccan market, a development day generally runs between MAD 2,500 and MAD 5,000 depending on seniority and type of provider, more for a tech lead or an architect. Tooling, licences and hosting weigh little next to that line.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/arrowlancer-prod.firebasestorage.app\/blog-ma\/application-web-sur-mesure-maroc-2026\/1.jpg\" alt=\"Custom Web Application Morocco 2026: Cost and Timeline\" loading=\"lazy\" \/><\/p>\n<p>Rough orders of magnitude for a first scope genuinely put into production:<\/p>\n<ul>\n<li><strong>Single-process internal tool<\/strong> (one main role, five to eight screens, data entry, search, export): MAD 60,000 to 150,000.<\/li>\n<li><strong>Business CRM or client portal<\/strong> (several roles, documents, notifications, dashboard, one integration): MAD 150,000 to 400,000.<\/li>\n<li><strong>Booking or multi-site management platform<\/strong> (online payment, invoicing, granular permissions, ERP integration): from MAD 400,000 upward.<\/li>\n<\/ul>\n<p>What moves these numbers is not the technology stack but the count of distinct roles, the count of integrations with systems you do not control, and the state of the data you need to migrate. Add hosting, from a few hundred to a few thousand MAD per month depending on volume, plus annual maintenance.<\/p>\n<h2>From scoping to go-live: the real timeline<\/h2>\n<p>A business application timeline is measured in months, and pure coding is the minority of it. A common breakdown:<\/p>\n<ul>\n<li><strong>Scoping and specification<\/strong>: 2 to 4 weeks, workshops with real users and a prioritised first releasable scope.<\/li>\n<li><strong>Screen design and architecture<\/strong>: 1 to 3 weeks, partly in parallel.<\/li>\n<li><strong>Iterative development<\/strong>: 6 to 20 weeks, with a usable version shown every fortnight.<\/li>\n<li><strong>Acceptance testing and data migration<\/strong>: 2 to 5 weeks. This is where schedules slip.<\/li>\n<li><strong>Go-live<\/strong>: one to two weeks, then a few weeks of hot fixes.<\/li>\n<\/ul>\n<p>Budget 3 to 4 months for a simple internal tool, 6 to 9 months for a full CRM or client portal. One factor matters as much as the provider&#8217;s method: having a business owner available on your side. Plan for 20% to 30% of one person&#8217;s time, someone who knows the process, settles the trade-offs and actually tests. Without them, decisions queue up, and every week of queueing lands in the schedule.<\/p>\n<h2>Mistake one: specifying screens instead of rules<\/h2>\n<p>Requirements documents for a web application often read as a list of pages and adjectives: &#8220;modern dashboard&#8221;, &#8220;intuitive interface&#8221;, &#8220;booking module&#8221;. A provider can price that, but they are pricing their interpretation, not your business. The overruns show up later, the day someone discovers that a booking can be cancelled up to 24 hours ahead except for contract clients, and that an issued invoice is not deleted but credited.<\/p>\n<p>Fixing this does not take fifty pages. Write the rules as plain sentences, role by role: who creates, who approves, who edits after approval, who must never see what. Then take ten real cases from last month, including the two awkward ones, and walk them through the flow you described. The gaps surface within an hour. Our guide on <a href=\"https:\/\/arrowlancer.ma\/blog\/en\/it-rfp-morocco-how-to-write-2026\/\">writing an IT RFP<\/a> covers the level of detail providers need.<\/p>\n<p>A price given before any specification is an estimate. Ask for it to be labelled as one, assumptions included, and insist that a paid scoping workshop comes before any fixed-price commitment.<\/p>\n<h2>Mistake two: budgeting the build and ignoring the years after it<\/h2>\n<p>A business application is not delivered, it is operated. Dependencies get security updates, browsers change, users ask for the field that is missing. Set aside 15% to 20% of the initial cost per year for corrective and evolutive maintenance, with hosting and backups on top. The same logic applies on mobile, as our article on <a href=\"https:\/\/arrowlancer.ma\/blog\/en\/mobile-app-maintenance-cost-morocco-2026\/\">app maintenance budgets<\/a> sets out.<\/p>\n<p>The other debt builds up during the project itself. When the schedule tightens, automated tests and documentation are the first things to go. Nobody notices at delivery. You notice eighteen months later, when a two-hour change takes two days because nobody dares touch the invoicing module.<\/p>\n<p>Lock into the contract: code ownership and your access to the repository from the first sprint, technical documentation and a deployment procedure delivered with the code, and an exit clause describing exactly what you take with you if you change provider.<\/p>\n<h2>SaaS, no-code or custom: deciding before you sign<\/h2>\n<p>The sensible order starts with SaaS. If your process is standard (invoicing, support tickets, payroll, project management), a vendor has already solved it better than three months of development will. The legitimate reasons to leave that path are known: a data-location constraint, a local specificity the vendor will never handle, a customisation ceiling you have hit, or licence costs that exceed the cost of building over three years.<\/p>\n<p>No-code deserves more than a shrug. For an internal tool with five or ten users, an Airtable base or a Power Apps front end on your data often does the job in two weeks, at a few hundred MAD per user per month. The limits appear quickly: per-user cost as adoption spreads, then the wall of complex rules and deep integrations. As a prototype, though, it is genuinely useful, because it validates business rules with users before anyone casts them in code.<\/p>\n<p>Custom becomes the right answer when the tool carries a competitive advantage, when it has to integrate deeply with existing systems, or when the three-year maths including licences tips that way. Run that calculation in a spreadsheet before the meeting. Our comparison of <a href=\"https:\/\/arrowlancer.ma\/blog\/en\/saas-vs-custom-software-morocco-2026\/\">SaaS versus custom software<\/a> goes through the criteria in detail.<\/p>\n<h2>Data hosting and CNDP compliance<\/h2>\n<p>As soon as the application stores names, phone numbers, addresses or HR records, it constitutes processing of personal data under Law 09-08, with a declaration to the CNDP. Plenty of companies think about the public website and forget the internal CRM, which usually holds far more information about identifiable people.<\/p>\n<p>Settle these during the project, not after: the declaration and stated purpose of the processing, informing the people concerned, limiting access by role (an intern does not need a full export of the client file), logging sensitive lookups, a defined retention period, and a processor clause with your host. If the servers sit outside Morocco, cross-border transfer falls under a specific regime, so check the formalities currently in force on the CNDP website before you fix a hosting region.<\/p>\n<p>Technically, a Moroccan datacentre and a European cloud will both handle the load of an SME business application without trouble. The decision rests on data sensitivity, what your own clients require of you, and latency. The declaration duties are detailed in our article on <a href=\"https:\/\/arrowlancer.ma\/blog\/en\/website-cndp-compliance-morocco-2026\/\">CNDP compliance<\/a>.<\/p>\n<h2>What the quote has to contain<\/h2>\n<ul>\n<li><strong>Scope split into lots<\/strong>, priced separately, with days per profile. A single lump-sum line is comparable to nothing.<\/li>\n<li><strong>Written assumptions<\/strong>: number of roles, number of integrations, volume of data migrated, who provides access.<\/li>\n<li><strong>Data migration priced on its own<\/strong>, stating who cleans the duplicates.<\/li>\n<li><strong>Acceptance criteria<\/strong> and the fix window for blocking defects.<\/li>\n<li><strong>Maintenance<\/strong>: scope, annual price, response time, what sits outside it.<\/li>\n<li><strong>Code ownership<\/strong>, access to the repository and environments, accounts opened in your name.<\/li>\n<li><strong>End-user training<\/strong> and a short handover document.<\/li>\n<\/ul>\n<p>A quote produced in 48 hours, with no workshop, for a tool meant to carry your sales process, necessarily rests on assumptions nobody wrote down. Ask for them. The answer tells you more than the number does.<\/p>\n<h2>Scope it before you build it<\/h2>\n<p>The useful sequence rarely changes: clarify the process, write the rules, decide between SaaS, no-code and custom, then price a deliberately small first scope that reaches production in a few months instead of a complete project promised in a year. Arrowlancer designs and builds custom business web applications for Moroccan SMEs, from CRMs to client portals and booking platforms, as part of our <a href=\"https:\/\/arrowlancer.ma\/en\/#services\">web services<\/a>. If you have a need to frame or a quote to challenge, <a href=\"https:\/\/arrowlancer.ma\/en\/#contact\">get in touch<\/a>: an hour of conversation is usually enough to tell whether custom is justified.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CRM, client portal, booking platform: what a custom web application Morocco SMEs commission actually costs in 2026, how long it takes, and what derails it.<\/p>\n","protected":false},"author":0,"featured_media":162,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[119],"tags":[598,601,604,468,607],"class_list":["post-161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cost_and_planning-en","tag-cost-and-timeline-en","tag-crm-en","tag-custom-web-application-en","tag-moroccan-smes-en","tag-web-development-morocco-en"],"_links":{"self":[{"href":"https:\/\/arrowlancer.ma\/blog\/wp-json\/wp\/v2\/posts\/161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arrowlancer.ma\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arrowlancer.ma\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/arrowlancer.ma\/blog\/wp-json\/wp\/v2\/comments?post=161"}],"version-history":[{"count":1,"href":"https:\/\/arrowlancer.ma\/blog\/wp-json\/wp\/v2\/posts\/161\/revisions"}],"predecessor-version":[{"id":164,"href":"https:\/\/arrowlancer.ma\/blog\/wp-json\/wp\/v2\/posts\/161\/revisions\/164"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/arrowlancer.ma\/blog\/wp-json\/wp\/v2\/media\/162"}],"wp:attachment":[{"href":"https:\/\/arrowlancer.ma\/blog\/wp-json\/wp\/v2\/media?parent=161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arrowlancer.ma\/blog\/wp-json\/wp\/v2\/categories?post=161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arrowlancer.ma\/blog\/wp-json\/wp\/v2\/tags?post=161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}