VWO developer for hire
I write VWO variation code as one minified JavaScript and CSS bundle, tested outside the tool and then placed in a VWO code block with the trigger that suits it. I check the SmartCode hide and timeouts against the site, handle single page app routing through VWO's own API, and fire goals at the moment the action succeeds. My VWO work includes tests for Red Cross First Aid Training and a Magento 2 store. Available for direct briefs and as overflow capacity for CRO agencies running VWO programmes.
Case studies on VWO
All for Red Cross First Aid Training except where noted.
VWO tests I have built
- Trustpilot reviews on a course listing page for Red Cross First Aid Training: conversion up 15.04% on the primary metric, with a device and audience read.
- Trustpilot reviews on the one day course page: add to basket up 15.08% and conversion up 9.08% against control.
- Trustpilot reviews on the three day course page: course search up 3.06% and significant, conversion flat. A mixed result, reported as one.
- A free sample popup on a Magento 2 and Hyvä store that adds to cart the way the store's own buttons do, so the mini cart updates natively.
How a build goes into VWO
VWO's code editor splits a variation into code blocks. Each block has a JavaScript tab, a CSS tab and a trigger: when the campaign executes, when a given element loads, on DOM ready, after another block, or on campaign exit for single page apps (see VWO's code editor documentation). My bundle usually sits in one block on the campaign executes trigger, because it already waits for its own elements. I keep visual editor changes out of the variation so the code is the only source of truth.
Setup that has to happen before any change is applied, such as reading a value the variant depends on, goes in the campaign's pre campaign JavaScript, which VWO runs ahead of the variation. On a single page app I use the campaign exit trigger to tear the variant down when the visitor leaves the tested view, so nothing lingers on the next route.
What to watch for with SmartCode
The asynchronous SmartCode hides the whole body by default while it fetches campaign settings and the VWO library. It waits up to settings_tolerance and library_tolerance (2000 ms and 2500 ms in the current default snippet) and then falls back to the control page (see customising the SmartCode). On a slow storefront a page wide hide of that length shows up in LCP.
Where the client agrees, I narrow hide_element to the region the test touches and let the bundle hide only the nodes it changes. I also compare the tolerances with real load times for the site. These are site wide settings shared by every campaign, so I raise them with whoever owns the tag rather than changing them quietly.
Single page apps on VWO
VWO follows route changes made through the History API or a hash without extra code. It cannot know when the framework has finished drawing the new view, so the editor settings to reapply changes when a component renders afresh, and to wait for hydration on Next.js or Nuxt sites, get switched on where the site needs them. For a view that has no URL of its own, such as a checkout step or a quick view, I tell VWO about it directly:
// Ask VWO to fetch and run campaigns for a view with no URL of its own
window.VWO = window.VWO || [];
window.VWO.push(["activate", {
virtualPageUrl: location.origin + "/checkout/delivery"
}]);
Two details catch people out. customUrl only works with campaigns already on the page, while virtualPageUrl fetches campaign settings for the new URL, so the choice depends on the test. And VWO accounts created from 14 June 2026 use window.Wingify in place of window.VWO, so I check which global the account's SmartCode defines before shipping. Both are covered in VWO's single page app documentation.
Goals that fire when the action succeeds
Page visit and click goals cover a lot, but on stores that add to basket over AJAX I use VWO custom conversion goals. VWO gives each goal an ID and a snippet that queues _vis_opt_goal_conversion(id) on window._vis_opt_queue, placed below the SmartCode. I call it from the bundle once the request has succeeded, not on the click, and send the same event to GA4 so the two reports can be checked against each other.
The same engineering underneath
Route aware activation, anti flicker scoped to the changed nodes, framework controlled inputs, late rendering targets and accessible components are handled identically on every platform I build for. That detail lives on my A/B test developer page, with more in stopping A/B test flicker and waiting for late elements.
Other CRO platforms I ship on
How pricing works
Submit a brief and you get an hour estimate back within one UK business day, with a total you approve before any work starts. A single test usually takes between 2 and 20 build hours: a copy or layout change sits near the bottom of that range, a new component or a multi step flow near the top. Regular volume earns a discounted rate, and there is no lock-in: one-off builds are as welcome as a weekly commitment.
Hire a VWO developer
For VWO variation builds, overflow capacity for CRO agencies, or to discuss a specific test idea. I respond within one UK business day.
Common questions
Can you work inside our existing VWO account and SmartCode?
Yes. I build in your account with whatever user role you give me. I do not change the SmartCode hide or timeout settings without agreeing it with whoever owns the tag, because those settings apply to every campaign on the site.
Do you build VWO variations in the visual editor?
Rarely for the variation itself. I place a tested bundle in a code block so the change can be reviewed as code. I do use the editor settings for single page apps and hydration where the site needs them.
Agencies contract and invoice Arafatcro Ltd, a UK limited company registered in England & Wales, on standard supplier terms. Company no. 17325504, verifiable on Companies House.