Which open-source tool replaces VWO Insights heatmaps and recordings
If your team keeps VWO recordings for one to three months depending on plan and needs retention and data location under its own control, self-hosted PostHog and OpenReplay are the main open-source session replay options, and Matomo fits when a paid heatmap plugin is acceptable. Each one moves recordings into your own infrastructure, but they differ in how they handle masking, how much they bundle, and what they cost to run.
PostHog bundles session replay with product analytics, feature flags and experiments, so one deployment can cover more than heatmaps. Its free self-hosted Docker Compose (hobby) path is MIT licensed, but code in the ee/ directory needs a PostHog license, and the documentation states that self-hosted deployments are officially unsupported. OpenReplay is AGPLv3 for most of its monorepo, with a community edition for self-managed retention and capture-time sanitization that masks data before it reaches the server. Matomo's heatmap and session recording features come from a paid InnoCraft plugin, and the plugin's documentation should be checked against your consent position, since adding heatmaps or recordings removes the CNIL exemption for analytics.
The main trade-off is self-hosted effort against control. Every option keeps data in your environment, but you carry the upgrades, backups, capacity planning and on-call work that VWO handles for you. Confirm with each vendor which features sit in the free edition, whether masking settings meet your privacy review, and who on your team owns the server before you choose.
Mapping VWO Insights capabilities to open-source options
This table maps the behavior analytics capabilities teams usually rely on in VWO Insights to self-hosted PostHog, OpenReplay and Matomo with its paid heatmap plugin. Read each row against your own VWO exports, since heatmap and recording parity depends on which views and filters your team actually uses. The main takeaway is that PostHog and OpenReplay cover recordings and heatmaps in one self-hosted tool, while Matomo needs a paid add-on for heatmaps and recordings.
| Capability | PostHog (self-hosted) | OpenReplay (self-hosted) | Matomo with Heatmap and Session Recording plugin |
|---|---|---|---|
| Session recordings | Yes | Yes | Yes |
| Heatmaps | Included in the product set; confirm click, scroll and rage-click views against your VWO exports | Heatmaps sit inside product analytics; confirm they cover the pages and views you use in VWO | Provided by the paid plugin, sold per user under the InnoCraft EULA with a 30-day free trial |
| Masking at capture | Confirm selector-based masking and input handling for your configuration | Capture-time sanitization masks or skips data before it reaches the server, with CSS selector masking and a private mode | Confirm masking options in the plugin documentation before recording any sensitive pages |
| Retention you control | Self-managed on your own servers; no plan-based retention limit applies to the self-hosted deployment | Self-managed retention on the open-source edition | Retention is set by your own database and storage policy |
| Funnels and product analytics | Product analytics and funnels are part of the product set | Funnels, trends and journeys are listed in the product analytics feature set | Funnels are part of core Matomo reporting; Google Analytics imports do not bring over funnel reports |
| Consent and ePrivacy exposure | Confirm with counsel; adding recordings can affect consent treatment | Adding session replay can affect consent treatment under CNIL guidance | Matomo's FAQ says heatmaps or session recordings remove the CNIL consent exemption |
| Hosting effort | Hobby Docker Compose deployment is free; self-hosting is unsupported by PostHog, so you own operations | A single VM with 2 vCPUs, 8 GB of RAM and 50 GB of storage is enough to start | At least 4 CPUs, 8 GB of RAM and 250 GB of SSD for up to 1 million pageviews a month |
| License | MIT except the ee/ directory, which needs a PostHog license for premium features | AGPLv3 for most of the monorepo, MIT for some directories, commercial license for ee/ | GPLv3 for the core; the heatmap and recording plugin is proprietary |
When PostHog, OpenReplay or Matomo fits best
VWO Insights bundles heatmaps and recordings with its testing suite, so the replacement depends on what you need to keep. Each option below covers a different mix of replay, heatmaps, analytics and licensing, and each carries a hosting and support trade-off you should price before you commit.
PostHog for one tool across analytics and replay
PostHog is MIT licensed outside its ee/ directory, and its README groups session replay with product analytics, feature flags and experiments. It fits teams that want heatmaps, recordings and experiments in one self-hosted stack. The free Docker Compose hobby deployment is suited to smaller volumes, and the README points larger workloads toward PostHog Cloud. Self-hosted PostHog is officially unsupported, so confirm who on your team or partner side owns upgrades and incidents.
OpenReplay for session replay with capture-time masking
OpenReplay's monorepo is AGPLv3 with some MIT directories, and its ee/ directory sits under a separate commercial license, so check which components you deploy. Its strongest fit is session replay with sanitization applied in the browser before data reaches the server, plus a private mode that masks text and inputs by default. A single VM with 2 vCPUs, 8 GB RAM and 50 GB storage is the stated starting size, which is a useful baseline for a pilot rather than a production sizing.
Matomo for analytics with a paid heatmap plugin
Matomo On-Premise is GPLv3 and free to run, but heatmaps and session recordings come from a separate premium plugin sold per user under the InnoCraft EULA, with a 30-day trial. This fits teams whose main need is web analytics and consent-friendly measurement, with heatmaps as an add-on. The ePrivacy FAQ notes that adding heatmaps or session recordings removes the audience measurement exemption in France, so confirm your consent position before enabling them.
Hosting effort and recurring operations
Every option moves the operating burden to you: patching, backups, storage growth, and database maintenance. Matomo's requirements FAQ sizes a single server at 4 CPUs, 8 GB RAM and 250 GB SSD for up to 1 million pageviews a month, and recommends separate app and database servers beyond that. Ask each vendor or partner to quote the infrastructure, the one-time migration, and the recurring support contract separately.
Retention and data residency decisions
Retention is the control VWO plans limit, so self-hosting moves that decision to you. Confirm how long recordings and events are kept, where backups sit, and who can access replay data. OpenReplay notes that self-hosting keeps session data in your own infrastructure, which matters for residency reviews. Document these settings in your data inventory before you turn on recording across production pages.
Migration limits for historical data
Historical behavior data rarely moves cleanly between tools. PostHog's managed migrations cover Mixpanel and Amplitude imports with a one-year limit per direct import job, and events are not deduplicated. Matomo's Google Analytics importer brings in aggregated reports only, so visitor logs and funnels do not carry over. Plan to keep VWO exports as an archive and treat the new tool's history as a fresh baseline.
How masking and retention differ across the three tools
Masking and retention are where a self-hosted replacement for VWO Insights either protects respondents or quietly records what it should not. OpenReplay offers the most documented capture-time controls: according to its README, it masks or skips data before it reaches the server, supports masking by CSS selector and input redaction, and provides a private mode that masks all text and inputs by default. Start from private mode, then open the specific pages in your application that show account numbers, health data, card fields or personal identifiers, and confirm that each one is covered by a selector rule. Test with a real-looking but synthetic session, then review the stored replay in the player, because a rule that misses a dynamically rendered field will not raise an error.
PostHog and Matomo take a different route, and you should confirm their settings in your own configuration rather than assume a default. PostHog's session replay and autocapture options, including how input fields and text are recorded, are set per project, and the same applies to Matomo's heatmap and session recording plugin. Whichever tool you choose, record the masking configuration as a controlled setting in version control or your change log, and repeat the test after every release of the front end. Retention is also an operator decision on self-hosted instances: you set how long replays, events and heatmap data are kept, and you should align those periods with your own retention schedule instead of a vendor's plan tiers. Ask your privacy team to confirm the period in writing before the first production recording.
Consent is the point most teams miss. Matomo's ePrivacy FAQ explains that France's CNIL treats some audience measurement trackers as exempt from consent when they are limited to purposes such as performance measurement, collect only anonymous statistics and exclude marketing measurement. The same FAQ states that adding features such as User ID, heatmaps or session recordings removes that exemption. If your analytics currently relies on the exemption, enabling heatmaps or recordings in any of the three tools means you need a consent mechanism before collection starts, and the legal review should happen before the configuration goes live. Confirm the current position with your data protection officer or counsel, and check the CNIL guidance for any other jurisdictions where your visitors are located.
Running session replay alongside VWO testing
A team does not have to replace VWO's testing and its behavior analytics in one move. Many keep VWO for A/B tests while moving heatmaps and recordings to a self-hosted tool, and the cards below cover the technical and contractual checks that make that split safe.
Two snippets on one page
Running VWO's snippet and a self-hosted replay script on the same page adds load, and the two tools can interfere with each other's DOM handling and page events. Each script also needs its own domain, version and rollback path. Test both on a staging copy of your highest-traffic templates, and confirm that neither script blocks rendering or breaks a VWO variation before you go live.
Cookie and consent overlap
VWO and a replay tool each set identifiers, and both must sit under the same consent banner. Session replay generally needs its own consent treatment, and Matomo's ePrivacy FAQ notes that adding heatmaps or session recordings removes the analytics exemption some regulators grant. Ask your privacy counsel how the replay tool's cookies and masking settings map to your consent categories before enabling it on any page.
Aligning event and variant names
If replay sessions and VWO experiment results cannot be joined, analysts lose the ability to watch what users in a losing variation actually did. Agree on one naming scheme for experiment keys, variant names and page or funnel events, and send the VWO variant as a property on replay or analytics events. Without that agreement, a recording labeled with a VWO campaign ID tells you nothing about which variant was shown.
Routing experiment events to PostHog
PostHog's session replay, heatmaps and product analytics can receive exposure and conversion events from your own pipeline, so variant context appears next to recordings. This option works when VWO remains the decision engine and PostHog is used for behavior review. Confirm with your team which system is the source of truth for assignment, because two systems that each assign variants will produce conflicting results.
Routing experiment events to GrowthBook
GrowthBook can read experiment exposure and metric data from your warehouse, so teams that later move testing off VWO can keep one analysis path. Using GrowthBook for analysis while VWO still serves the variants is possible, but it requires consistent exposure logging from both sides. Treat this as a transition design and confirm the exposure data format with the people who maintain your warehouse before you commit to it.
Confirming VWO contract terms first
Before turning off VWO's recording features, check what your current plan includes, what retention applies, and whether recordings or heatmaps are contractually bundled with testing. Ask whether historical recordings can be exported and in what format, because a replay tool cannot import what you did not retrieve. Put those answers in writing at renewal, and do not remove the feature until you have confirmed the export path.
Moving recordings, heatmaps and retention settings off VWO
This sequence moves session recordings, heatmaps and retention rules from VWO Insights to a self-hosted tool you operate, with masking decided before any data is captured.
Inventory pages, recordings and retention needs
The analytics owner and a privacy or compliance lead list the pages that get heatmaps and recordings in VWO, the funnels and experiments those recordings support, and the retention period each team actually needs. Export what VWO will provide, such as heatmap screenshots, reports or recording metadata, and confirm with VWO which exports exist, since historical recordings generally cannot be imported into PostHog or OpenReplay. The step is done when you have a page list with an owner for each page and a written statement of what history you will keep outside VWO.
Set masking and retention rules before capture
The privacy lead and the engineering owner decide which fields are masked, which selectors are skipped and how long recordings are kept. OpenReplay sanitizes data in the browser before it reaches the server and offers a private mode that masks all text and inputs by default, so decide whether that default fits your forms. PostHog and Matomo need the same decisions made in their own configuration. Confirm the exact retention options in the edition you choose, since the open-source editions set retention in the operator's own infrastructure. The step is done when a signed-off masking and retention policy exists for each product area.
Deploy the chosen tool in your infrastructure
The platform team installs the selected tool on infrastructure your organization controls, such as a cloud account, a data center or an air-gapped network. For PostHog, the free Docker Compose hobby deployment is the starting point, and its documentation recommends a server equivalent to 4 vCPU, 16 GB of RAM and more than 30 GB of storage. For OpenReplay, a single VM with 2 vCPUs, 8 GB of RAM and 50 GB of storage is enough to start. Confirm sizing against expected traffic, because PostHog's README says open-source deployments should scale to approximately 100k events per month. The step is done when the instance is reachable, backed up and documented with its version.
Deploy the snippet on a staging domain
The web team adds the new tracking snippet to a staging copy of the site, using the same masking rules from the earlier step. Test that sensitive form fields are masked, that recordings start and stop as expected and that heatmaps collect clicks on the pages in the inventory. Serving the snippet from your own domain can help first-party tracking, which OpenReplay's README notes is not blocked by ad blockers. The step is done when a tester has checked the staging recordings against the masking policy and signed off.
Run VWO and the new tool in parallel
Keep VWO recording and heatmap features live on production while the new tool captures the same pages. Compare the two sets of recordings and heatmaps for the same sessions to confirm coverage, and check that the new tool's data stays in your infrastructure as designed. Watch consent behavior too: Matomo's ePrivacy FAQ notes that heatmaps or session recordings can remove the consent exemption that some analytics setups rely on, so have your privacy lead confirm the consent position before you go live. The step is done when coverage matches the inventory and the consent review is recorded.
Retire VWO recording and heatmap features
Once parallel running is signed off, the analytics owner disables VWO recording and heatmap features page by page, following the inventory, and removes the VWO snippet from pages that no longer need it. Keep any exports you agreed on with VWO in a secured archive with a documented retention period. Notify teams that historical VWO recordings will no longer be viewable in VWO after the change. The step is done when VWO is no longer capturing recordings or heatmaps and the archive and notice are on file.
Confirm the ongoing operating model
Assign owners for upgrades, backups, access reviews and incident response, because self-hosted PostHog deployments are officially unsupported and PostHog does not provide customer support for self-hosted instances. Ask whether your chosen edition needs a paid license for features you rely on, such as the premium features in PostHog's ee directory or OpenReplay's Enterprise edition. Schedule regular checks of the latest releases and the operator's runbook. The step is done when named owners, a support plan and a license position are documented.
What does it cost to self-host session replay instead of VWO Insights?
What are the cost components of self-hosting session replay?
The main components are server hosting, storage, staff time to install and operate the platform, upgrades, consent and privacy review, and any paid support or managed hosting you choose. The software itself is free for the open-source editions. PostHog's self-host documentation recommends a server equivalent to 4 vCPU, 16 GB of RAM and more than 30 GB of storage, and OpenReplay's README says a single VM with 2 vCPUs, 8 GB of RAM and 50 GB of storage is enough to start. Hosting is billed by your cloud provider or data center. Staff time is usually the largest line, because someone must own the deployment, backups, access control and version upgrades. Ask your team to size these components against your own traffic before comparing totals with VWO's current plan fees, which you should confirm directly with VWO.
Which costs are one-time and which recur every year?
Setup is largely one-time: planning the architecture, deploying the stack, configuring masking rules, integrating the tracking snippet or SDK, and documenting the consent position. Recurring costs include compute and storage, backups, security patching, version upgrades, monitoring, and the staff time spent on them. Migration from VWO also has a one-time cost, covering the inventory of existing recordings and heatmap configurations and the decision on whether historical data is worth moving at all. Recurring costs are often underestimated because open-source releases arrive continuously. For example, OpenReplay's latest release in the supplied facts is v1.28, published September 25, 2025, and each upgrade needs testing in your environment.
How do event volume and retention drive storage costs?
Storage grows with the number of recorded sessions multiplied by how long you keep them. Session replay data is heavier than page analytics, so recording rate, session length, page weight and the number of captured events all raise disk use. Retention is the lever you control when self-hosting: VWO's recording retention is limited by plan, while your own deployment can keep data as long as your policy and storage budget allow, provided you have a documented retention decision. PostHog's free cloud tier covers the first 1 million analytics events each month, and its self-host documentation says open-source deployments should scale to approximately 100k events per month before the README recommends moving to PostHog Cloud. Model your expected session volume and retention period before choosing a server size.
Can our team run self-hosted session replay in-house?
Often yes, if you already run containers or Kubernetes, have someone who can manage backups and access control, and have a privacy owner who will sign off on masking rules. The gap is usually operational ownership rather than installation. PostHog's self-host documentation states that self-hosted deployments are officially unsupported and that PostHog does not provide customer support for product or infrastructure questions on self-hosted instances. OpenReplay's open-source edition comes with community support, while its Enterprise edition adds a custom SLA and dedicated support. If nobody on your team can own the platform for its full lifetime, factor in a paid support contract or a managed option such as OpenReplay Dedicated, which starts at $199 per month on AWS, GCP or Azure according to its pricing page.
How long does migration from VWO Insights take?
Duration depends on scope: how many pages and funnels need recording, how many heatmaps must be rebuilt, whether historical recordings must move, and how much consent and masking work is required. A narrow scope, with one site, a short list of pages and no historical data, is a small project. A broad scope across many sites, apps and regions is a multi-phase project with testing and sign-off. Historical recordings generally do not transfer between tools, so most teams run both tools in parallel for a period before closing VWO. Agree the duration in writing against a defined scope rather than against a general estimate. Confirm with the vendor how VWO exports recordings and heatmap data before you commit to a timeline.
Does self-hosting session replay change our consent and privacy costs?
It can reduce vendor-side exposure, but it does not remove the consent question. Matomo's ePrivacy FAQ says the French authority CNIL treats some audience measurement trackers as exempt from consent only when they collect anonymous statistics and exclude marketing measurement, and that adding User ID, heatmaps or session recordings removes that exemption. That means session replay usually needs a consent position, a cookie or tracking notice, and masking configured before data leaves the browser. OpenReplay's README describes capture-time sanitization and a private mode that masks text and inputs by default, which reduces the review burden. Budget for a privacy review and a documented data flow in every case, and confirm the legal position with your own counsel for each jurisdiction.
What should we ask for in a written quote for self-hosted session replay?
Ask for a scope document that lists the sites, apps and pages in scope, the environments to be built (production, staging and disaster recovery), the masking and consent configuration, the integration work, the migration approach for existing VWO campaigns, and the handover documentation. Ask for the hosting assumptions, including instance sizing, storage size tied to your session volume and retention period, and backup location. Confirm what is one-time and what is recurring, including upgrades, monitoring and support hours. Ask which deliverables are excluded, such as legal review or historical data migration, and what triggers a change request. Finally, request the acceptance criteria and the timeline in writing before work starts. DeployOpen works from written, fixed scope and does not publish a price list, so a quote follows from that scope.
Is Matomo On-Premise a cheaper alternative for heatmaps?
Matomo On-Premise Community is free, but its heatmaps and session recordings come from a separate paid plugin. The Heatmap and Session Recording plugin is a premium plugin sold per number of users under the InnoCraft EULA, with a 30-day free trial, according to the Matomo plugin marketplace. Its license is separate from Matomo's GPLv3 core. The plugin fee therefore becomes a recurring line item that scales with users, and you should confirm the current plugin price with its vendor. If you need replay and heatmaps as a core capability, compare the total of Matomo plus that plugin against self-hosted PostHog or OpenReplay, using the same hosting, staff and consent assumptions for each option.
Deciding between PostHog, OpenReplay and Matomo for your team
Choose the tool by the job you need done first, because the three options overlap less than their feature lists suggest. Pick PostHog if experiments, product analytics, feature flags and session replay should share one tool and one data store. Its free self-hosted deployment is an MIT-licensed Docker Compose setup, but the repository's ee/ directory carries a separate license and premium features require a PostHog license. Self-hosted deployments are officially unsupported, so your team carries the operations. Confirm which features you need sit outside ee/ before you commit, and check the scale guidance in the README, which points open-source deployments toward PostHog Cloud at roughly 100k events per month.
Pick OpenReplay if replay quality, DevTools data and cobrowsing matter most. Its README describes capture-time sanitization, CSS selector masking and a private mode that masks all text and inputs by default, which is the control set to test first against your own pages. Most of the monorepo is AGPLv3 and the ee/ directory is commercial, so check the license terms with counsel before you modify or offer the platform to others. Matomo fits when web analytics governance, existing Matomo reporting and a stable on-premise base already matter. Its Heatmap and Session Recording plugin is paid and licensed under the InnoCraft EULA, not the GPL, and it is sold per number of users.
Treat the consent question as a point for legal review, not a conclusion. Matomo's ePrivacy FAQ says France's CNIL may exempt some analytics trackers from consent only when they are limited to measurement purposes and collect anonymous statistics, and that adding User ID, heatmaps or session recordings removes that exemption. Heatmaps and recordings are the features this page is about, so a Matomo setup with the paid plugin likely needs a consent review, and the same question applies to PostHog and OpenReplay. Ask your data protection officer or counsel to confirm how each option is configured in your jurisdictions, including Italy, the Netherlands and Spain, before you choose.
Gaps to confirm before you switch
Each option covers part of what VWO Insights does, and none covers all of it out of the box. The cards below name the gaps that most often change the decision, so you can put each question to the vendor or your own team before a renewal date forces the choice.
Supported PostHog path without staff
PostHog's self-host documentation states that self-hosted deployments are officially unsupported and that PostHog does not offer customer support for product, infrastructure or other questions on self-hosted instances. Its free deployment is a Docker Compose hobby setup, and the README says open-source deployments should scale to about 100k events per month before moving to PostHog Cloud. Confirm whether your team can run upgrades, backups and scaling in-house, or whether you need an implementation partner to carry that load.
OpenReplay enterprise features under ee license
OpenReplay's README places everything under its ee/ directory under a separate commercial license, and its pricing page lists SSO and SAML, SCIM provisioning, roles and permissions, audit trail and a custom SLA in the self-hosted Enterprise edition. If your security review requires any of these controls, confirm with OpenReplay whether they are available in the community edition or only under a custom-priced contract.
Matomo heatmap and recording costs
Matomo's On-Premise Community edition is free, but heatmaps and session recordings come from the separately licensed Heatmap and Session Recording plugin, which is sold per number of users under the InnoCraft EULA rather than the GPL. Matomo's ePrivacy FAQ also notes that adding heatmaps or session recordings removes the consent exemption some regulators grant to privacy-focused analytics. Ask the plugin vendor for per-user pricing at your headcount and get a legal view on consent before you enable either feature.
VWO features none of these replace
Visual testing, personalization, audience targeting and campaign workflows are part of VWO's testing suite, and PostHog, OpenReplay and Matomo do not provide a no-code equivalent that matches them. Session replay and heatmaps answer where users struggle, but they do not deliver the variant editor or personalization rules your marketing team may rely on. List every VWO feature in use today, then decide which ones need a coded replacement, a separate testing tool or a change in process.
License and support terms that affect the choice
The license of each candidate decides which features you can run without a further agreement. PostHog's repository is under the MIT Expat license, but everything in its ee/ directory is covered by a separate license, and the README says that premium features from that directory on a self-hosted instance require a PostHog license. If you need fully free software, the posthog-foss repository is purged of all proprietary code and features, so confirm which features your heatmap and replay plan depends on before choosing it. OpenReplay follows the same pattern: most of its monorepo is AGPLv3, some directories are MIT, and everything under ee/ falls under a commercial license. Matomo's core is GPLv3, but its Heatmap and Session Recording plugin is sold under the InnoCraft EULA, so the heatmap and replay capability you were paying VWO for is the part with a non-open license.
Support is the second term to read closely. Free editions come with community support: PostHog's self-host documentation states that self-hosted deployments are officially unsupported and that PostHog does not offer customer support for product, infrastructure or other questions on self-hosted instances. OpenReplay's pricing page lists community support for its open-source edition, with a custom SLA and dedicated support reserved for the self-hosted Enterprise edition, priced on multi-year contracts. Matomo's On-Premise Community edition includes forum support. None of these sources gives a response time, so if a production replay tool is business critical, ask each vendor in writing what support, uptime commitment and incident response it offers, and budget for an operations partner or internal on-call cover to fill the gap.
Before you commit, write down the license and support position for the exact feature set you need, not the product headline. Check whether the heatmap or replay module you rely on sits in a commercially licensed directory or plugin, confirm whether your legal team accepts AGPL obligations if you modify the code, and decide who owns upgrades and security patches. Those answers determine whether the open-source edition is enough or whether a paid tier or implementation contract is part of the cost model.
How DeployOpen scopes and delivers session replay replacements
DeployOpen plans, implements, hardens and documents self-hosted session replay and heatmap platforms inside your own cloud accounts, data centers or air-gapped networks. Work for an open-source alternative to VWO Insights heatmaps and recordings starts with a written scope that fixes what is replaced, what is kept and how masking and retention are proven before any recording is captured.
How we scope
- Inventory which VWO Insights heatmap pages and recording funnels your teams actually use today
- Set the masking rules, retention periods and consent position with your privacy and legal owners before build
- Agree in writing which tool fits each need, such as PostHog, OpenReplay or Matomo with a heatmap plugin
How we build
- Deploy the chosen platform on your infrastructure, sized against the vendor's published hosting requirements
- Configure capture-time masking, CSS selector exclusions and input redaction, then test them on staging pages
- Place the tracking snippet behind your own domain and verify that recordings land in your storage only
How we hand over
- Document architecture, masking configuration, retention settings, backup routines and upgrade steps for your team
- Provide test evidence showing which sensitive fields were masked and which were excluded from capture
- Walk your operations staff through daily running, access roles and the process for responding to deletion requests
How we support
- Engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts
- Ongoing support, upgrades and continuous testing are available as a retainer after handover
- Quotes follow from the written scope, so ask for the line items covering hosting, configuration, testing and support

