1<!DOCTYPE html><!-- Last Published: Fri Oct 02 2026 20:22:08 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="virtustant-8e4eab.webflow.io" data-wf-page="66f0f6032f9297b2bd2036ba" data-wf-site="66e37e1f7b0b7a08bf707deb" lang="en"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>Virtustant Pricing for Employers: $7/hr All-In, $0 Fees</title><meta content="See Virtustant starting prices by role: VAs from $7/hr, SDRs from $8/hr, and executive assistants from $8.50/hr all-in. Zero recruitment fees." name="description"/><meta content="Virtustant Pricing for Employers: $7/hr All-In, $0 Fees" property="og:title"/><meta content="See Virtustant starting prices by role: VAs from $7/hr, SDRs from $8/hr, and executive assistants from $8.50/hr all-in. Zero recruitment fees." property="og:description"/><meta content="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/68b1f93a50c480bd59544dc4_opengraph-pricing-image.webp" property="og:image"/><meta content="Virtustant Pricing for Employers: $7/hr All-In, $0 Fees" name="twitter:title"/><meta content="See Virtustant starting prices by role: VAs from $7/hr, SDRs from $8/hr, and executive assistants from $8.50/hr all-in. Zero recruitment fees." name="twitter:description"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="X_tW25K0yiboOJPOHMgDsP1YYWh0s9M-keBTD7Ac7Mk" name="google-site-verification"/><link href="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/css/virtustant-8e4eab.webflow.shared.53b877ae3.min.css" rel="stylesheet" type="text/css" integrity="sha384-U7h3rj2sInn8R67jYMlNY8LhSsh5NDrKtu/+jt4pxOWs/BfpdHHoCmjuY9YtDJF7" crossorigin="anonymous"/><link href="https://fonts.googleapis.com" rel="preconnect"/><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous"/>
1<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script>
1<script type="text/javascript">WebFont.load({ google: { families: ["Montserrat:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic","Open Sans:300,300italic,400,400italic,600,600italic,700,700italic,800,800italic","Ubuntu:300,300italic,400,400italic,500,500italic,700,700italic"] }});</script>
1<script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script>
1<link href="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/66ed9c3c9352e67b5c05772a_32x32.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/66fecfd9dda6ca6d78d7cddb_256x256.png" rel="apple-touch-icon"/><link href="https://www.virtustant.com/pricing" rel="canonical"/>
1<script type="application/ld+json"> 2{ 3 "@context": "https://schema.org", 4 "@graph": [ 5 { 6 "@type": "WebPage", 7 "@id": "https://www.virtustant.com/pricing#webpage", 8 "name": "Virtustant Pricing for Employers: All-In Rates by Role", 9 "description": "Virtustant rates start at $7/hr all-in. This is the total hourly price you pay, with no separate recruitment or placement fee. Your quote depends on the role, experience and agreed schedule. Median client-side rates by role from Virtustant's H1 2026 placement data (441 starts, JanuaryâJune 2026) are published on this page.", 10 "url": "https://www.virtustant.com/pricing", 11 "inLanguage": "en", 12 "dateModified": "2026-10-01", 13 "reviewedBy": { 14 "@id": "https://www.virtustant.com/about-us#kevin-wright" 15 }, 16 "about": { 17 "@id": "https://www.virtustant.com/#organization" 18 }, 19 "isPartOf": { 20 "@id": "https://www.virtustant.com/#website" 21 }, 22 "speakable": { 23 "@type": "SpeakableSpecification", 24 "cssSelector": [ 25 "h1", 26 ".vfaq-sec .fq-q", 27 ".vfaq-sec .fq-a p", 28 ".vpr-box p", 29 ".vpr-med p" 30 ] 31 }, 32 "mainEntity": { 33 "@type": "Service", 34 "@id": "https://www.virtustant.com/pricing#service", 35 "name": "LATAM Remote Staffing", 36 "serviceType": "Remote staffing", 37 "provider": { 38 "@id": "https://www.virtustant.com/#organization" 39 }, 40 "areaServed": { 41 "@type": "Country", 42 "name": "United States" 43 }, 44 "offers": { 45 "@type": "Offer", 46 "description": "One all-in hourly rate with zero placement fees", 47 "price": "7.00", 48 "priceCurrency": "USD", 49 "priceSpecification": { 50 "@type": "UnitPriceSpecification", 51 "price": 7, 52 "minPrice": 7, 53 "priceCurrency": "USD", 54 "unitText": "HOUR", 55 "description": "Virtustant rates start at $7/hr all-in. This is the total hourly price you pay, with no separate recruitment or placement fee. Your quote depends on the role, experience and agreed schedule." 56 } 57 } 58 }, 59 "hasPart": { 60 "@id": "https://www.virtustant.com/pricing#h1-2026-median-rates" 61 } 62 }, 63 { 64 "@type": "Dataset", 65 "@id": "https://www.virtustant.com/pricing#h1-2026-median-rates", 66 "name": "Virtustant median client-side rates by role, H1 2026", 67 "description": "Median client-side hourly rate benchmarks by role from Virtustant placement records: 441 placement starts (397 people) between January 1 and June 30, 2026, records read on September 30, 2026. Each rate is expected weekly client revenue divided by expected weekly hours (SDR/BDR: explicit client rate). Benchmarks from placement records, not verified payments. There is no single median across all roles;
67 role medians range from $9.00/hr (dispatcher) to $12.41/hr (SDR/BDR).", 68 "url": "https://www.virtustant.com/pricing#median-rates", 69 "temporalCoverage": "2026-01-01/2026-06-30", 70 "dateModified": "2026-10-01", 71 "measurementTechnique": "Median per role of expected weekly client revenue divided by expected weekly hours for each placement start (SDR/BDR: explicit client hourly rate); roles with fewer than 10 starts flagged as small sample.", 72 "variableMeasured": [ 73 { 74 "@type": "PropertyValue", 75 "name": "Median client-side hourly rate: SDR / BDR", 76 "value": 12.41, 77 "unitText": "USD per hour", 78 "description": "n=32 placement starts" 79 }, 80 { 81 "@type": "PropertyValue", 82 "name": "Median client-side hourly rate: Social media manager", 83 "value": 12, 84 "unitText": "USD per hour", 85 "description": "n=31 placement starts" 86 }, 87 { 88 "@type": "PropertyValue", 89 "name": "Median client-side hourly rate: Executive assistant", 90 "value": 12, 91 "unitText": "USD per hour", 92 "description": "n=24 placement starts" 93 }, 94 { 95 "@type": "PropertyValue", 96 "name": "Median client-side hourly rate: Virtual assistant", 97 "value": 10.1, 98 "unitText": "USD per hour", 99 "description": "n=24 placement starts" 100 }, 101 { 102 "@type": "PropertyValue", 103 "name": "Median client-side hourly rate: Appointment setter", 104 "value": 10.73, 105 "unitText": "USD per hour", 106 "description": "n=22 placement starts" 107 }, 108 { 109 "@type": "PropertyValue", 110 "name": "Median client-side hourly rate: Administrative assistant", 111 "value": 9.5, 112 "unitText": "USD per hour", 113 "description": "n=17 placement starts" 114 }, 115 { 116 "@type": "PropertyValue", 117 "name": "Median client-side hourly rate: Customer service", 118 "value": 10.83, 119 "unitText": "USD per hour", 120 "description": "n=12 placement starts" 121 }, 122 { 123 "@type": "PropertyValue", 124 "name": "Median client-side hourly rate: Dispatcher", 125 "value": 9, 126 "unitText": "USD per hour", 127 "description": "n=10 placement starts" 128 }, 129 { 130 "@type": "PropertyValue", 131 "name": "Median client-side hourly rate: Customer service representative", 132 "value": 9.65, 133 "unitText": "USD per hour", 134 "description": "n=9 placement starts (small sample)" 135 }, 136 { 137 "@type": "PropertyValue", 138 "name": "Median client-side hourly rate: Bookkeeper", 139 "value": 12.85, 140 "unitText": "USD per hour", 141 "description": "n=7 placement starts (small sample)" 142 } 143 ], 144 "creator": { 145 "@id": "https://www.virtustant.com/#organization" 146 }, 147 "publisher": { 148 "@id": "https://www.virtustant.com/#organization" 149 }, 150 "isBasedOn": "https://www.virtustant.com/blog/2026-nearshore-rate-report", 151 "isAccessibleForFree": true, 152 "inLanguage": "en" 153 }, 154 { 155 "@type": "FAQPage", 156 "@id": "https://www.virtustant.com/pricing#faq", 157 "isPartOf": { 158 "@id": "https://www.virtustant.com/pricing#webpage" 159 }, 160 "mainEntity": [ 161 { 162 "@type": "Question", 163 "name": "How much does it cost to hire a virtual assistant from Latin America through Virtustant?", 164 "acceptedAnswer": { 165 "@type": "Answer", 166 "text": "Virtual assistants start at $7/hr all-in. This is the total hourly price you pay, with no separate recruitment or placement fee. At the starting price, 160 billed hours equals $1,120. In Virtustant's H1 2026 placement data (441 starts, JanuaryâJune 2026), the median client-side rate for a virtual assistant was $10.10/hr (n=24), or $1,616 for 160 hours. Your quote depends on the role, experience and agreed schedule." 167 } 168 }, 169 { 170 "@type": "Question", 171 "name": "How much does Virtustant charge for recruitment services?",
172 "acceptedAnswer": { 173 "@type": "Answer", 174 "text": "There is no recruitment or placement fee. Virtustant rates start at $7/hr all-in. This is the total hourly price you pay, with no separate recruitment or placement fee. Your quote depends on the role, experience and agreed schedule." 175 } 176 }, 177 { 178 "@type": "Question", 179 "name": "How much does a virtual executive assistant cost through Virtustant?", 180 "acceptedAnswer": { 181 "@type": "Answer", 182 "text": "Executive assistants start at $8.50/hr all-in. At that starting price, 160 billed hours equals $1,360. In Virtustant's H1 2026 placement data, the median client-side rate for an executive assistant was $12.00/hr (n=24). Your quote depends on the role, experience and agreed schedule, with no separate recruitment or placement fee." 183 } 184 }, 185 { 186 "@type": "Question", 187 "name": "Is a part-time hire more expensive per hour?", 188 "acceptedAnswer": { 189 "@type": "Answer", 190 "text": "Part-time and full-time hiring use the same all-in hourly pricing model. The quoted rate depends on the role, experience and agreed schedule. We confirm the rate and hours during your discovery call." 191 } 192 }, 193 { 194 "@type": "Question", 195 "name": "How much do staffing agencies charge, and how is Virtustant different?", 196 "acceptedAnswer": { 197 "@type": "Answer", 198 "text": "Agency pricing varies: some charge a placement fee or a percentage of annual compensation. Virtustant charges one quoted all-in hourly rate, with no separate recruitment or placement fee. Compare the same role, schedule, service scope and contract terms." 199 } 200 }, 201 { 202 "@type": "Question", 203 "name": "How long is Virtustant's hiring process?", 204 "acceptedAnswer": { 205 "@type": "Answer", 206 "text": "You get a shortlist of 3 to 5 vetted candidates within 48 hours of your first call, and your hire can start in 72 hours." 207 } 208 }, 209 { 210 "@type": "Question", 211 "name": "Do you provide ongoing support after the hiring process?", 212 "acceptedAnswer": { 213 "@type": "Answer", 214 "text": "Yes. Each hire gets a dedicated account manager who oversees the transition, runs regular check-ins, and ensures quality. We also handle all payroll, HR and compliance for the lifetime of the engagement." 215 } 216 }, 217 { 218 "@type": "Question", 219 "name": "What's Virtustant's cancellation policy?", 220 "acceptedAnswer": { 221 "@type": "Answer", 222 "text": "Engagements are month-to-month. Cancellation and changes to your engagement follow the terms in your agreement. We confirm the schedule and engagement terms with you during the discovery call." 223 } 224 }, 225 { 226 "@type": "Question", 227 "name": "What kind of services do you offer?", 228 "acceptedAnswer": { 229 "@type": "Answer", 230 "text": "Remote staffing across roles such as virtual assistants, executive assistants, sales reps, marketing specialists, customer service, bookkeepers, designers, developers and project managers, all pre-vetted, bilingual and working in your time zone." 231 } 232 }, 233 { 234 "@type": "Question", 235 "name": "How can I book a free consultation with Virtustant?", 236 "acceptedAnswer": { 237 "@type": "Answer", 238 "text": "Use the form on the page or click the Book a call button anywhere on the site. The call is 30 minutes, free, with zero obligation." 239 } 240 } 241 ] 242 }, 243 { 244 "@type": "BreadcrumbList", 245 "@id": "https://www.virtustant.com/pricing#breadcrumb", 246 "itemListElement": [ 247 { 248 "@type": "ListItem", 249 "position": 1, 250 "name": "Home", 251 "item": "https://www.virtustant.com/" 252 }, 253 { 254 "@type": "ListItem", 255 "position": 2, 256 "name": "Pricing", 257 "item": "https://www.virtustant.com/pricing" 258 } 259 ] 260 } 261 ] 262} 263</script>
263<script>(function(w,i,g){w[g]=w[g]||[];if(typeof w[g].push=='function')w[g].push.apply(w[g],Array.isArray(i)?i:[i]);})(window,['GTM-TM59XZLC'],'google_tags_first_party');</script>
263<script async="" src="/xa5e8du3i6ydNjZlMzdlMWY3YjBiN2EwOGJmNzA3ZGVi/PtOkhLp-YGMGuzduhxCgtPzVuXY"></script>
263<script type="text/javascript">window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('set', 'developer_id.dZGVlNj', true);gtag('set', 'developer_id.dYWYxNW', true);gtag('js', new Date());gtag('config', 'GTM-TM59XZLC');</script>
vendor: 86 bytes, line 263
263<script src="https://www.google.com/recaptcha/api.js" type="text/javascript"></script>
263<script type="text/javascript">!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.agent='plwebflow';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '149301424004448');fbq('track', 'PageView');</script>
263<!-- ===================================================================== --> 264<!-- VIRTUSTANT HEAD CODE (Project Settings > Custom Code > Head Code) --> 265<!-- ===================================================================== --> 266<!-- NOTE: do not re-paste the vendor's stray title element here - it created a duplicate page title sitewide. -->
267<script type="text/javascript" src="https://qscripts.s3.amazonaws.com/pscript.js"></script>
vendor: 1 bytes, line 267
267
268<script> 269qbit('event', 'site_visit', { 270 agid: '1480', 271 adid: '20035068', 272 referrer: document.referrer, 273 site_url: window.location.href, 274 timestamp: Date.now() 275}); 276</script>
276 277 278<meta property="og:site_name" content="Virtustant" /> 279<meta name="linkedin-site-verification" content="16492df8-b529-4f29-b3fe-f30d90f59228" /> 280<link rel="preconnect" href="https://assets.calendly.com" crossorigin /> 281
282<script> 283(function () { 284 285 var vtMemory = {}; 286 var vtStorage = { 287 getItem: function (key) { try { return window.localStorage.getItem(key) || vtMemory[key] || null; } catch (e) { return vtMemory[key] || null; } }, 288 setItem: function (key, value) { vtMemory[key] = String(value); try { window.localStorage.setItem(key, String(value)); } catch (e) {} }, 289 removeItem: function (key) { delete vtMemory[key]; try { window.localStorage.removeItem(key); } catch (e) {} } 290 }; 291 292 /* âââ CONFIG ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 293 294 var WEBHOOK_URL = 'https://hook.us1.make.com/9fe9yonsopmuqfef4ezcc5lbdq81nxyb'; 295 296 var CAL_URL = 297 'https://calendly.com/d/cm4v-bxb-7hy/discovery-call-virtustant'; 298 299 var CONTACTED_URL = '/confirmation'; 300 301 var MAX_RETRIES = 3; 302 303 var TTL_MS = 304 30 * 24 * 60 * 60 * 1000; 305 306 // 7-day ad-credit window for Calendly. 307 var CAL_TTL_MS = 308 7 * 24 * 60 * 60 * 1000; 309 310 var CALENDLY_FIELDS = [ 311 'utm_source', 312 'utm_medium', 313 'utm_campaign', 314 'utm_term', 315 'utm_content' 316 ]; 317 318 var CLICK_IDS = [ 319 'gclid', 320 'gbraid', 321 'wbraid', 322 'gad_source', 323 'gad_campaignid', 324 'fbclid', 325 'ttclid', 326 'msclkid', 327 'li_fat_id' 328 ]; 329 330 var SOURCE_BY_CLICKID = { 331 gclid: 'google', 332 gbraid: 'google', 333 wbraid: 'google', 334 gad_source: 'google', 335 gad_campaignid: 'google', 336 fbclid: 'facebook', 337 ttclid: 'tiktok', 338 msclkid: 'bing', 339 li_fat_id: 'linkedin' 340 }; 341 342 343 /* âââ AI SOURCE NORMALIZATION âââââââââââââââââââââââââââââââââââââââ */ 344 345 // Different AI platforms / integrations can sometimes use slightly 346 // different utm_source values. 347 // 348 // Normalize them here so analytics stays consistent. 349 350 var AI_SOURCE_ALIASES = { 351 352 // ChatGPT / OpenAI 353 'chatgpt': 'chatgpt', 354 'chatgpt.com': 'chatgpt', 355 'chat.openai.com': 'chatgpt', 356 'openai': 'chatgpt', 357 'openai.com': 'chatgpt', 358 359 // Gemini 360 'gemini': 'gemini', 361 'gemini.google.com': 'gemini', 362 'bard': 'gemini', 363 'bard.google.com': 'gemini', 364 365 // Claude 366 'claude': 'claude', 367 'claude.ai': 'claude', 368 'anthropic': 'claude', 369 370 // Perplexity 371 'perplexity': 'perplexity', 372 'perplexity.ai': 'perplexity', 373 374 // Microsoft Copilot 375 'copilot': 'copilot', 376 'microsoft_copilot': 'copilot', 377 'copilot.microsoft.com': 'copilot', 378 379 // Grok 380 'grok': 'grok', 381 'xai': 'grok', 382 'x.ai': 'grok', 383 384 // Other assistants 385 'deepseek': 'deepseek', 386 'deepseek.com': 'deepseek', 387 388 'you.com': 'you_com', 389 'you_com': 'you_com', 390 391 'poe': 'poe', 392 'poe.com': 'poe', 393 394 'meta_ai': 'meta_ai', 395 'meta.ai': 'meta_ai', 396 397 'character_ai': 'character_ai', 398 'character.ai': 'character_ai', 399 400 // Search-engine AI experiences 401 'google_ai_mode': 'google_ai_mode', 402 'brave_ai': 'brave_ai' 403 }; 404 405 406 function vtNormalizeAiSource(source) { 407 408 if (!source) return ''; 409 410 var normalized = 411 String(source) 412 .toLowerCase() 413 .trim(); 414 415 return AI_SOURCE_ALIASES[normalized] || source; 416 } 417 418 419 function vtIsAiSource(source) { 420 421 return [ 422 'chatgpt', 423 'gemini', 424 'claude', 425 'perplexity', 426 'copilot', 427 'grok', 428 'deepseek', 429 'you_com', 430 'meta_ai', 431 'poe', 432 'character_ai', 433 'google_ai_mode', 434 'brave_ai' 435 ].indexOf(source) !== -1; 436 } 437 438 439 /* âââ HOSTNAME FALLBACK MAP ââââââââââââââââââââââââââââââââââââââââ */ 440 441 // Used only AFTER explicit UTMs, click IDs and AI-specific URL 442 // detection have failed. 443 444 var SOURCE_BY_HOSTNAME = [ 445 446 /* Search engines */ 447 448 { 449 re: /(^|\.)google\./i, 450 source: 'google_organic', 451 medium: 'organic' 452 }, 453 454 { 455 re: /(^|\.)bing\.com$/i, 456 source: 'bing_organic', 457 medium: 'organic' 458 }, 459 460 { 461 re: /(^|\.)yahoo\./i, 462 source: 'yahoo_organic', 463 medium: 'organic' 464 }, 465 466 { 467 re: /(^|\.)duckduckgo\.com$/i, 468 source: 'duckduckgo_organic', 469 medium: 'organic' 470 }, 471 472 { 473 re: /(^|\.)yandex\./i, 474 source: 'yandex_organic', 475 medium: 'organic' 476 }, 477 478 { 479 re: /(^|\.)baidu\.com$/i, 480 source: 'baidu_organic', 481 medium: 'organic' 482 }, 483 484 485 /* Social */ 486 487 { 488 re: /(^|\.)facebook\.com$/i, 489 source: 'facebook_organic', 490 medium: 'referral' 491 }, 492 493 { 494 re: /(^|\.)linkedin\.com$/i, 495 source: 'linkedin_organic', 496 medium: 'referral' 497 }, 498 499 { 500 re: /(^|\.)(twitter\.com|x\.com)$/i, 501 source: 'twitter_organic', 502 medium: 'referral' 503 }, 504 505 { 506 re: /(^|\.)instagram\.com$/i, 507 source: 'instagram_organic', 508 medium: 'referral' 509 }, 510 511 { 512 re: /(^|\.)youtube\.com$/i, 513 source: 'youtube_organic', 514 medium: 'referral' 515 }, 516 517 { 518 re: /(^|\.)reddit\.com$/i, 519 source: 'reddit_organic', 520 medium: 'referral' 521 }, 522 523 524 /* AI assistants */ 525 526 { 527 re: /(^|\.)chatgpt\.com$/i, 528 source: 'chatgpt', 529 medium: 'ai_assistant' 530 }, 531 532 { 533 re: /(^|\.)chat\.openai\.com$/i, 534 source: 'chatgpt', 535 medium: 'ai_assistant' 536 }, 537 538 { 539 re: /(^|\.)claude\.ai$/i, 540 source: 'claude', 541 medium: 'ai_assistant' 542 }, 543 544 { 545 re: /(^|\.)perplexity\.ai$/i, 546 source: 'perplexity', 547 medium: 'ai_assistant' 548 }, 549 550 { 551 re: /(^|\.)gemini\.google\.com$/i, 552 source: 'gemini', 553 medium: 'ai_assistant' 554 }, 555 556 { 557 re: /(^|\.)bard\.google\.com$/i, 558 source: 'gemini', 559 medium: 'ai_assistant' 560 }, 561 562 { 563 re: /(^|\.)copilot\.microsoft\.com$/i, 564 source: 'copilot', 565 medium: 'ai_assistant' 566 }, 567 568 { 569 re: /(^|\.)edgeservices\.bing\.com$/i, 570 source: 'copilot', 571 medium: 'ai_assistant' 572 }, 573 574 { 575 re: /(^|\.)deepseek\.com$/i, 576 source: 'deepseek', 577 medium: 'ai_assistant' 578 }, 579 580 { 581 re: /(^|\.)(grok\.com|x\.ai)$/i, 582 source: 'grok', 583 medium: 'ai_assistant' 584 }, 585 586 { 587 re: /(^|\.)you\.com$/i, 588 source: 'you_com', 589 medium: 'ai_assistant' 590 }, 591 592 { 593 re: /(^|\.)meta\.ai$/i, 594 source: 'meta_ai', 595 medium: 'ai_assistant' 596 }, 597 598 { 599 re: /(^|\.)poe\.com$/i, 600 source: 'poe', 601 medium: 'ai_assistant' 602 }, 603 604 { 605 re: /(^|\.)character\.ai$/i, 606 source: 'character_ai', 607 medium: 'ai_assistant' 608 } 609 ]; 610 611 612 /* âââ LOCAL STORAGE TRACKING âââââââââââââââââââââââââââââââââââââââ */ 613 614 615 function vtSetTracked(key, value) { 616 617 vtStorage.setItem( 618 'vt_' + key, 619 value 620 ); 621 622 vtStorage.setItem( 623 'vt_' + key + '_ts', 624 String(Date.now()) 625 ); 626 } 627 628 629 // Returns stored value only while inside attribution TTL. 630 function vtGetTracked(key) { 631 632 var val = 633 vtStorage.getItem( 634 'vt_' + key 635 ); 636 637 var ts = 638 vtStorage.getItem( 639 'vt_' + key + '_ts' 640 ); 641 642 if ( 643 !val || 644 !ts || 645 Date.now() - Number(ts) > TTL_MS 646 ) { 647 648 vtStorage.removeItem( 649 'vt_' + key 650 ); 651 652 vtStorage.removeItem( 653 'vt_' + key + '_ts' 654 ); 655 656 return ''; 657 } 658 659 return val; 660 } 661 662 663 // Non-destructive read using a custom TTL. 664 function vtRecentTracked(key, ttl) { 665 666 var val = 667 vtStorage.getItem( 668 'vt_' + key 669 ); 670 671 var ts = 672 vtStorage.getItem( 673 'vt_' + key + '_ts' 674 ); 675 676 if ( 677 !val || 678 !ts || 679 Date.now() - Number(ts) > ttl 680 ) { 681 return ''; 682 } 683 684 return val; 685 } 686 687 688 /* âââ READ URL TRACKING PARAMETERS âââââââââââââââââââââââââââââââââ */ 689 690
691 var urlParams = 692 new URLSearchParams( 693 window.location.search 694 ); 695 696 var ALL_KEYS = 697 CALENDLY_FIELDS.concat( 698 CLICK_IDS 699 ); 700 701 var tracking = {}; 702 703 704 ALL_KEYS.forEach(function (key) { 705 706 tracking[key] = 707 urlParams.get(key) || ''; 708 709 }); 710 711 712 // Persist explicit UTMs and click IDs. 713 ALL_KEYS.forEach(function (key) { 714 715 if (tracking[key]) { 716 717 vtSetTracked( 718 key, 719 tracking[key] 720 ); 721 722 } else { 723 724 tracking[key] = 725 vtGetTracked(key); 726 727 } 728 729 }); 730 731 732 /* âââ REFERRER / AI DETECTION ââââââââââââââââââââââââââââââââââââââ */ 733 734 function vtDetectReferrerSource() { 735 736 try { 737 738 if (!document.referrer) { 739 return null; 740 } 741 742 743 var ref = 744 new URL( 745 document.referrer 746 ); 747 748 749 var refHost = 750 ref.hostname 751 .toLowerCase() 752 .replace(/^www\./, ''); 753 754 755 var currentHost = 756 window.location.hostname 757 .toLowerCase() 758 .replace(/^www\./, ''); 759 760 761 var refPath = 762 ref.pathname 763 .toLowerCase(); 764 765 766 if ( 767 refHost === currentHost 768 ) { 769 return null; 770 } 771 772 773 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 774 AI-SPECIFIC DETECTION 775 776 IMPORTANT: 777 These checks must happen BEFORE generic Google / Bing 778 organic detection. 779 âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 780 781 782 /* ChatGPT */ 783 784 if ( 785 /(^|\.)chatgpt\.com$/i.test(refHost) || 786 /(^|\.)chat\.openai\.com$/i.test(refHost) 787 ) { 788 789 return { 790 source: 'chatgpt', 791 medium: 'ai_assistant' 792 }; 793 794 } 795 796 797 /* Gemini */ 798 799 if ( 800 /(^|\.)gemini\.google\.com$/i.test(refHost) || 801 /(^|\.)bard\.google\.com$/i.test(refHost) 802 ) { 803 804 return { 805 source: 'gemini', 806 medium: 'ai_assistant' 807 }; 808 809 } 810 811 812 /* Claude */ 813 814 if ( 815 /(^|\.)claude\.ai$/i.test(refHost) 816 ) { 817 818 return { 819 source: 'claude', 820 medium: 'ai_assistant' 821 }; 822 823 } 824 825 826 /* Perplexity */ 827 828 if ( 829 /(^|\.)perplexity\.ai$/i.test(refHost) 830 ) { 831 832 return { 833 source: 'perplexity', 834 medium: 'ai_assistant' 835 }; 836 837 } 838 839 840 /* Microsoft Copilot standalone */ 841 842 if ( 843 /(^|\.)copilot\.microsoft\.com$/i.test(refHost) 844 ) { 845 846 return { 847 source: 'copilot', 848 medium: 'ai_assistant' 849 }; 850 851 } 852 853 854 /* Bing Copilot / Bing AI search 855 856 This is the important improvement over the old script. 857 858 Previously only the hostname was inspected, meaning: 859 860 bing.com/copilotsearch 861 862 became: 863 864 bing_organic 865 866 because both share bing.com. 867 */ 868 869 if ( 870 /(^|\.)bing\.com$/i.test(refHost) && 871 ( 872 /^\/copilotsearch(?:\/|$)/i.test(refPath) || 873 /^\/copilot(?:\/|$)/i.test(refPath) || 874 /^\/chat(?:\/|$)/i.test(refPath) 875 ) 876 ) { 877 878 return { 879 source: 'copilot', 880 medium: 'ai_assistant' 881 }; 882 883 } 884 885 886 /* Edge / Microsoft AI services */ 887 888 if ( 889 /(^|\.)edgeservices\.bing\.com$/i.test(refHost) 890 ) { 891 892 return { 893 source: 'copilot', 894 medium: 'ai_assistant' 895 }; 896 897 } 898 899 900 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 901 GOOGLE AI MODE 902 903 udm=50 is associated with Google's AI Mode. 904 905 IMPORTANT: 906 This is NOT necessarily Gemini. 907 908 So we track it separately as: 909 910 google_ai_mode / ai_assistant 911 âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 912 913 if ( 914 /(^|\.)google\./i.test(refHost) && 915 ( 916 ref.searchParams.get('udm') === '50' || 917 refPath === '/ai' || 918 refPath.indexOf('/ai/') === 0 919 ) 920 ) { 921 922 return { 923 source: 'google_ai_mode', 924 medium: 'ai_assistant' 925 }; 926 927 } 928 929 930 /* Grok */ 931 932 if ( 933 /(^|\.)(grok\.com|x\.ai)$/i.test(refHost) 934 ) { 935 936 return { 937 source: 'grok', 938 medium: 'ai_assistant' 939 }; 940 941 } 942 943 944 /* DeepSeek */ 945 946 if ( 947 /(^|\.)deepseek\.com$/i.test(refHost) 948 ) { 949 950 return { 951 source: 'deepseek', 952 medium: 'ai_assistant' 953 }; 954 955 } 956 957 958 /* You.com */ 959 960 if ( 961 /(^|\.)you\.com$/i.test(refHost) 962 ) { 963 964 return { 965 source: 'you_com', 966 medium: 'ai_assistant' 967 }; 968 969 } 970 971 972 /* Meta AI */ 973 974 if ( 975 /(^|\.)meta\.ai$/i.test(refHost) 976 ) { 977 978 return { 979 source: 'meta_ai', 980 medium: 'ai_assistant' 981 }; 982 983 } 984 985 986 /* Poe */ 987 988 if ( 989 /(^|\.)poe\.com$/i.test(refHost) 990 ) { 991 992 return { 993 source: 'poe', 994 medium: 'ai_assistant' 995 }; 996 997 } 998 999 1000 /* Character AI */ 1001 1002 if ( 1003 /(^|\.)character\.ai$/i.test(refHost) 1004 ) { 1005 1006 return { 1007 source: 'character_ai', 1008 medium: 'ai_assistant' 1009 }; 1010 1011 } 1012 1013 1014 /* Brave AI */ 1015 1016 if ( 1017 refHost === 'search.brave.com' && 1018 /^\/ask(?:\/|$)/i.test(refPath) 1019 ) { 1020 1021 return { 1022 source: 'brave_ai', 1023 medium: 'ai_assistant' 1024 }; 1025 1026 } 1027 1028 1029 /* âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1030 NORMAL HOSTNAME FALLBACK 1031 1032 Only gets here when an AI-specific URL was not detected. 1033 âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1034 1035 for ( 1036 var i = 0; 1037 i < SOURCE_BY_HOSTNAME.length; 1038 i++ 1039 ) { 1040 1041 if ( 1042 SOURCE_BY_HOSTNAME[i].re.test( 1043 refHost 1044 ) 1045 ) { 1046 1047 return { 1048 source: 1049 SOURCE_BY_HOSTNAME[i].source, 1050 1051 medium: 1052 SOURCE_BY_HOSTNAME[i].medium 1053 }; 1054 1055 } 1056 1057 } 1058 1059 1060 /* Unknown external referral */ 1061 1062 return { 1063 1064 source: 1065 refHost.replace( 1066 /^www\./, 1067 '' 1068 ), 1069 1070 medium: 1071 'referral' 1072 1073 }; 1074 1075 1076 } catch (e) { 1077 1078 return null; 1079 1080 } 1081 1082 } 1083 1084 1085 /* âââ CAPTURE REFERRER FALLBACK ââââââââââââââââââââââââââââââââââââ */ 1086 1087 1088 (function vtCaptureReferrerFallback() { 1089 1090 var hasExplicitParams = 1091 ALL_KEYS.some(function (k) { 1092 1093 return !!urlParams.get(k); 1094 1095 }); 1096 1097 1098 // Explicit UTMs / click IDs always win. 1099 if (hasExplicitParams) { 1100 return; 1101 } 1102 1103 1104 var detected = 1105 vtDetectReferrerSource(); 1106 1107 1108 if (detected) { 1109 1110 vtSetTracked( 1111 'ref_source', 1112 detected.source 1113 ); 1114 1115 vtSetTracked( 1116 'ref_medium', 1117 detected.medium 1118 ); 1119 1120 } 1121 1122 })(); 1123 1124 1125 window.vtTracking = 1126 tracking; 1127 1128 window.vtCAL_URL = 1129 CAL_URL; 1130 1131 1132 /* âââ COOKIE HELPERS âââââââââââââââââââââââââââââââââââââââââââââââ */ 1133 1134 1135 function vtGetCookie(name) { 1136 1137 var match = 1138 document.cookie.match( 1139 new RegExp( 1140 '(?:^|; )' + 1141 name + 1142 '=([^;]*)' 1143 ) 1144 ); 1145 1146 return match 1147 ? decodeURIComponent( 1148 match[1] 1149 ) 1150 : ''; 1151 1152 } 1153 1154 1155 window.vtGetFbp = function () { 1156 1157 return vtGetCookie( 1158 '_fbp' 1159 ); 1160 1161 }; 1162 1163 1164 /* âââ META / FACEBOOK PARAMS âââââââââââââââââââââââââââââââââââââââ */ 1165 1166
1167 window.vtBuildFbParams = 1168 function () { 1169 1170 var out = { 1171 fbc: '', 1172 fbp: '' 1173 }; 1174 1175 1176 if (tracking.fbclid) { 1177 1178 var ts = 1179 vtStorage.getItem( 1180 'vt_fbclid_ts' 1181 ) || 1182 String( 1183 Date.now() 1184 ); 1185 1186 1187 out.fbc = 1188 'fb.1.' + 1189 ts + 1190 '.' + 1191 tracking.fbclid; 1192 1193 } 1194 1195 1196 out.fbp = 1197 window.vtGetFbp(); 1198 1199 1200 return out; 1201 1202 }; 1203 1204 1205 /* âââ META LEAD TRACKING âââââââââââââââââââââââââââââââââââââââââââââââ */ 1206 1207 1208 window.vtTrackMetaLead = 1209 function () { 1210 1211 var storageKey = 1212 'vt_meta_lead_tracked'; 1213 1214 1215 /* 1216 * Count a visitor as a Meta Lead only once per browser session. 1217 * This prevents a form submit followed by a Calendly open (or the 1218 * reverse) from creating two Lead events for the same session. 1219 */ 1220 1221 try { 1222 1223 if ( 1224 sessionStorage.getItem( 1225 storageKey 1226 ) === '1' 1227 ) { 1228 return false; 1229 } 1230 1231 } catch (e) {} 1232 1233 1234 if ( 1235 typeof window.fbq === 1236 'function' 1237 ) { 1238 1239 window.fbq( 1240 'track', 1241 'Lead' 1242 ); 1243 1244 1245 try { 1246 1247 sessionStorage.setItem( 1248 storageKey, 1249 '1' 1250 ); 1251 1252 } catch (e) {} 1253 1254 1255 return true; 1256 1257 } 1258 1259 1260 console.warn( 1261 '[vt] Meta Pixel not available for Lead event' 1262 ); 1263 1264 return false; 1265 1266 }; 1267 1268 1269 /* âââ ATTRIBUTION RESOLUTION âââââââââââââââââââââââââââââââââââââââ */ 1270 1271 1272 function vtResolveAttribution(trk) { 1273 1274 trk = 1275 trk || 1276 tracking; 1277 1278 1279 var out = { 1280 1281 utm_source: 1282 trk.utm_source, 1283 1284 utm_medium: 1285 trk.utm_medium, 1286 1287 utm_campaign: 1288 trk.utm_campaign, 1289 1290 utm_term: 1291 trk.utm_term, 1292 1293 utm_content: 1294 trk.utm_content 1295 1296 }; 1297 1298 1299 /* Normalize explicit AI UTM sources */ 1300 1301 if (out.utm_source) { 1302 1303 out.utm_source = 1304 vtNormalizeAiSource( 1305 out.utm_source 1306 ); 1307 1308 1309 if ( 1310 vtIsAiSource( 1311 out.utm_source 1312 ) && 1313 !out.utm_medium 1314 ) { 1315 1316 out.utm_medium = 1317 'ai_assistant'; 1318 1319 } 1320 1321 } 1322 1323 1324 /* Detect source through advertising click IDs */ 1325 1326 var blobParts = []; 1327 1328 var inferredSource = ''; 1329 1330 1331 CLICK_IDS.forEach( 1332 function (k) { 1333 1334 if (trk[k]) { 1335 1336 blobParts.push( 1337 k + 1338 ':' + 1339 trk[k] 1340 ); 1341 1342 1343 if ( 1344 !inferredSource && 1345 SOURCE_BY_CLICKID[k] 1346 ) { 1347 1348 inferredSource = 1349 SOURCE_BY_CLICKID[k]; 1350 1351 } 1352 1353 } 1354 1355 } 1356 ); 1357 1358 1359 var clickBlob = 1360 blobParts.join('|'); 1361 1362 1363 if ( 1364 !out.utm_source && 1365 inferredSource 1366 ) { 1367 1368 out.utm_source = 1369 inferredSource; 1370 1371 } 1372 1373 1374 if ( 1375 !out.utm_medium && 1376 clickBlob 1377 ) { 1378 1379 out.utm_medium = 1380 'cpc'; 1381 1382 } 1383 1384 1385 if (trk.fbclid) { 1386 1387 // For Meta/Facebook traffic, send only the raw fbclid 1388 // in utm_content so Calendly/webhooks can use it directly. 1389 out.utm_content = trk.fbclid; 1390 1391} else if (clickBlob) { 1392 1393 if (!out.utm_content) { 1394 1395 out.utm_content = clickBlob; 1396 1397 } else if (!out.utm_term) { 1398 1399 out.utm_term = clickBlob; 1400 1401 } else { 1402 1403 out.utm_content = 1404 out.utm_content + 1405 '|' + 1406 clickBlob; 1407 1408 } 1409 1410} 1411 1412 1413 /* Referrer fallback 1414 1415 Includes: 1416 1417 - AI assistants 1418 - Google AI Mode 1419 - Bing Copilot 1420 - organic search 1421 - organic social 1422 - referral websites 1423 */ 1424 1425 if ( 1426 !out.utm_source 1427 ) { 1428 1429 var refSource = 1430 vtGetTracked( 1431 'ref_source' 1432 ); 1433 1434 1435 if (refSource) { 1436 1437 out.utm_source = 1438 vtNormalizeAiSource( 1439 refSource 1440 ); 1441 1442 1443 if ( 1444 !out.utm_medium 1445 ) { 1446 1447 out.utm_medium = 1448 vtGetTracked( 1449 'ref_medium' 1450 ) || 1451 'referral'; 1452 1453 } 1454 1455 } 1456 1457 } 1458 1459 1460 /* Final fallback */ 1461 1462 if ( 1463 !out.utm_source 1464 ) { 1465 1466 out.utm_source = 1467 'webpage'; 1468 1469 } 1470 1471 1472 if ( 1473 !out.utm_medium 1474 ) { 1475 1476 out.utm_medium = 1477 'direct'; 1478 1479 } 1480 1481 1482 if ( 1483 !out.utm_campaign 1484 ) { 1485 1486 out.utm_campaign = 1487 'none'; 1488 1489 } 1490 1491 1492 if ( 1493 !out.utm_term 1494 ) { 1495 1496 out.utm_term = 1497 'none'; 1498 1499 } 1500 1501 1502 if ( 1503 !out.utm_content 1504 ) { 1505 1506 out.utm_content = 1507 'none'; 1508 1509 } 1510 1511 1512 return out; 1513 1514 } 1515 1516 1517 window.vtResolveAttribution = 1518 vtResolveAttribution; 1519 1520 1521 /* âââ CALENDLY URL âââââââââââââââââââââââââââââââââââââââââââââââââ */ 1522 1523 1524 window.vtBuildCalendlyUrl = 1525 function (extraParams) { 1526 1527 var out = 1528 vtResolveAttribution(); 1529 1530 1531 var p = 1532 new URLSearchParams(); 1533 1534 1535 CALENDLY_FIELDS.forEach( 1536 function (k) { 1537 1538 p.set( 1539 k, 1540 out[k] 1541 ); 1542 1543 } 1544 ); 1545 1546 1547 if (extraParams) { 1548 1549 new URLSearchParams( 1550 extraParams 1551 ).forEach( 1552 function (v, k) { 1553 1554 p.set( 1555 k, 1556 v 1557 ); 1558 1559 } 1560 ); 1561 1562 } 1563 1564 1565 return ( 1566 CAL_URL + 1567 '?' + 1568 p.toString() 1569 ); 1570 1571 }; 1572 1573 1574 /* âââ CALENDLY POPUP ATTRIBUTION âââââââââââââââââââââââââââââââââââ */ 1575 1576 1577 window.vtBuildCalendlyPopupUrl = 1578 function () { 1579 1580 var recent = {}; 1581 1582
1583 ALL_KEYS.forEach( 1584 function (k) { 1585 1586 recent[k] = 1587 vtRecentTracked( 1588 k, 1589 CAL_TTL_MS 1590 ); 1591 1592 } 1593 ); 1594 1595 1596 var out = 1597 vtResolveAttribution( 1598 recent 1599 ); 1600 1601 1602 var p = 1603 new URLSearchParams(); 1604 1605 1606 CALENDLY_FIELDS.forEach( 1607 function (k) { 1608 1609 p.set( 1610 k, 1611 out[k] 1612 ); 1613 1614 } 1615 ); 1616 1617 1618 return ( 1619 CAL_URL + 1620 '?' + 1621 p.toString() 1622 ); 1623 1624 }; 1625 1626 1627 // One form-scoped snapshot, one in-flight request, one reusable booking URL. 1628 window.vtBindLeadForm = function (config) { 1629 var form = document.getElementById(config.formId); 1630 if (!form || form.__vtBound) return; 1631 form.__vtBound = true; 1632 var container = form.closest('.w-form') || form.parentElement; 1633 var state = { pending: false, delivered: false, snapshot: null, url: '' }; 1634 function field(key) { 1635 var id = config.fields[key]; 1636 return Array.prototype.find.call(form.querySelectorAll('input, select, textarea'), function (el) { return el.id === id; }); 1637 } 1638 var missing = Object.keys(config.fields).filter(function (key) { return !field(key); }); 1639 if (missing.length) console.error('[vt] Missing configured fields in ' + config.formName + ': ' + missing.join(', ')); 1640 function value(key) { var el = field(key); return el ? String(el.value || '').trim() : ''; } 1641 var panel = document.createElement('div'); 1642 panel.setAttribute('role', 'status'); 1643 panel.setAttribute('aria-live', 'polite'); 1644 panel.hidden = true; 1645 panel.style.cssText = 'margin-top:16px;padding:16px;border:1px solid currentColor;border-radius:8px'; 1646 var message = document.createElement('p'); 1647 var link = document.createElement('a'); 1648 link.textContent = 'Book your discovery call'; 1649 link.style.cssText = 'display:inline-block;text-decoration:underline;margin-right:16px'; 1650 // An ordinary same-tab anchor always works even when popup assets fail. 1651 var retry = document.createElement('button'); 1652 retry.type = 'button'; retry.textContent = 'Retry sending details'; retry.hidden = true; 1653 panel.appendChild(message); panel.appendChild(link); panel.appendChild(retry); 1654 container.appendChild(panel); 1655 function show(text) { panel.hidden = false; message.textContent = text; link.href = state.url; } 1656 function send() { 1657 if (state.pending || state.delivered) return; 1658 state.pending = true; retry.hidden = true; 1659 show('Sending your details. You can book your discovery call below.'); 1660 return window.vtHandleFormSuccess({}, { extra: state.snapshot, redirect: false }).then(function () { 1661 state.pending = false; state.delivered = true; 1662 show('Your details have been received. Book your discovery call below.'); 1663 }).catch(function () { 1664 state.pending = false; retry.hidden = false; 1665 show('We could not confirm delivery of your details. Please retry. You can also book your call below.'); 1666 console.warn('[vt] Make delivery was not confirmed for ' + config.formName); 1667 }); 1668 } 1669 retry.addEventListener('click', send); 1670 form.addEventListener('submit', function (event) { 1671 var website = field('website'); 1672 if (website && website.value.trim() && !/^https?:\/\//i.test(website.value.trim())) website.value = 'https://' + website.value.trim(); 1673 var email = field('email'); 1674 if (email) email.setCustomValidity(/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value('email')) ? '' : 'Enter a valid email address.'); 1675 var first = field('first'); 1676 if (first) first.setCustomValidity(value('first') ? '' : 'Enter your first name.'); 1677 if (missing.length || !form.checkValidity() || !value('email') || !(value('first') + value('last'))) { 1678 event.preventDefault(); event.stopImmediatePropagation(); 1679 if (missing.length) { panel.hidden = false; message.textContent = 'This form is temporarily unavailable. Please use a booking button to contact us.'; link.hidden = true; } 1680 else form.reportValidity(); 1681 return; 1682 } 1683 if (state.pending || state.delivered) { 1684 event.preventDefault(); event.stopImmediatePropagation(); 1685 show(state.pending ? 'Your details are being sent. Book your call below.' : 'Your details have been received. Book your call below.'); 1686 return; 1687 } 1688 // Failed delivery must be retried with the same snapshot and ID. 1689 if (state.snapshot) { 1690 event.preventDefault(); event.stopImmediatePropagation(); send(); return; 1691 } 1692 state.snapshot = { 1693 form_name: config.formName, 1694 name: (value('first') + ' ' + value('last')).trim(), 1695 email: value('email').toLowerCase(), a1: value('phone'), 1696 a2: value('website'), a3: value('how'), 1697 submission_id: 'vt-' + Date.now() + '-' + Math.random().toString(36).slice(2) 1698 }; 1699 // Include matching identity and attribution in the native Webflow payload. 1700 var hidden = Object.assign({}, window.vtTracking, window.vtResolveAttribution(), { 1701 submission_id: state.snapshot.submission_id, form_name: config.formName, page_url: window.location.href 1702 });
1703 Object.keys(hidden).forEach(function (key) { 1704 var el = Array.prototype.find.call(form.querySelectorAll('input[type="hidden"]'), function (input) { return input.name === key; }); 1705 if (!el) { el = document.createElement('input'); el.type = 'hidden'; el.name = key; el.setAttribute('data-name', key); form.appendChild(el); } 1706 el.value = hidden[key] || ''; 1707 }); 1708 var prefill = new URLSearchParams(); 1709 prefill.set('name', state.snapshot.name); prefill.set('email', state.snapshot.email); 1710 if (state.snapshot.a1) prefill.set('a1', state.snapshot.a1); 1711 if (state.snapshot.a2) prefill.set('a6', state.snapshot.a2); 1712 if (state.snapshot.a3) prefill.set('a5', state.snapshot.a3); 1713 state.url = window.vtBuildCalendlyUrl(prefill.toString()); 1714 send(); // Start Make delivery before opening the in-page booking widget. 1715 try { window.vtCalOpen(state.url); } catch (error) { console.warn('[vt] Use the booking link below the form'); } 1716 // Native Webflow storage/email submission remains enabled. 1717 }, true); 1718 ['email', 'first'].forEach(function (key) { var el = field(key); if (el) el.addEventListener('input', function () { el.setCustomValidity(''); }); }); 1719 }; 1720 1721 /* âââ SITE URL BUILDER âââââââââââââââââââââââââââââââââââââââââââââ */ 1722 1723 1724 window.vtBuildSiteUrl = 1725 function ( 1726 path, 1727 extraParams 1728 ) { 1729 1730 var p = 1731 new URLSearchParams( 1732 extraParams || '' 1733 ); 1734 1735 1736 return ( 1737 path + 1738 ( 1739 Array.from( 1740 p.keys() 1741 ).length 1742 1743 ? '?' + 1744 p.toString() 1745 1746 : '' 1747 ) 1748 ); 1749 1750 }; 1751 1752 1753 /* âââ WEBHOOK ââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1754 1755 1756 window.vtSendWebhook = function (data, retryCount) { 1757 if (!data || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(data.email || '').trim()) || !String(data.name || '').trim()) { 1758 return Promise.reject(new Error('A valid email and name are required')); 1759 } 1760 retryCount = retryCount || 0; 1761 var controller = typeof AbortController === 'function' ? new AbortController() : null; 1762 var timer = controller ? setTimeout(function () { controller.abort(); }, 10000) : null; 1763 return Promise.resolve().then(function () { 1764 return fetch(WEBHOOK_URL, { 1765 method: 'POST', headers: { 'Content-Type': 'application/json' }, 1766 body: JSON.stringify(data), keepalive: true, 1767 signal: controller ? controller.signal : undefined 1768 }); 1769 }).then(function (res) { 1770 if (!res.ok) { var error = new Error('HTTP ' + res.status); error.status = res.status; throw error; } 1771 return { delivered: true, submission_id: data.submission_id }; 1772 }).catch(function (error) { 1773 if (retryCount < MAX_RETRIES && (!error.status || error.status === 408 || error.status === 429 || error.status >= 500)) { 1774 return new Promise(function (resolve) { setTimeout(resolve, (retryCount + 1) * 1000); }) 1775 .then(function () { return window.vtSendWebhook(data, retryCount + 1); }); 1776 } 1777 throw error; 1778 }).finally(function () { if (timer) clearTimeout(timer); }); 1779 }; 1780 1781 /* âââ FORM SUCCESS âââââââââââââââââââââââââââââââââââââââââââââââââ */ 1782 1783 1784 window.vtHandleFormSuccess = 1785 function ( 1786 fieldMap, 1787 options 1788 ) { 1789 1790 options = 1791 options || 1792 {}; 1793 1794 1795 var payload = 1796 Object.assign( 1797 {}, 1798 tracking, 1799 vtResolveAttribution(), 1800 options.extra || {} 1801 ); 1802 1803 1804 /* Facebook */ 1805 1806 var fbParams = 1807 window.vtBuildFbParams(); 1808 1809 1810 payload.fbc = 1811 fbParams.fbc; 1812 1813 payload.fbp = 1814 fbParams.fbp; 1815 1816 1817 /* Page attribution evidence */ 1818 1819 payload.page_url = 1820 window.location.href; 1821 1822 payload.referrer = 1823 document.referrer || 1824 ''; 1825 1826 1827 /* 1828 * Preserve the referrer path/query independently. 1829 * 1830 * This is especially useful when investigating AI traffic later. 1831 * 1832 * Example: 1833 * 1834 * /copilotsearch?q=... 1835 * /search?q=...&udm=50 1836 */ 1837 1838 payload.attribution_referrer_host = 1839 ''; 1840 1841 payload.attribution_referrer_path = 1842 ''; 1843 1844
1845 try { 1846 1847 if ( 1848 document.referrer 1849 ) { 1850 1851 var attributionRef = 1852 new URL( 1853 document.referrer 1854 ); 1855 1856 1857 payload.attribution_referrer_host = 1858 attributionRef.hostname; 1859 1860 1861 payload.attribution_referrer_path = 1862 attributionRef.pathname + 1863 attributionRef.search; 1864 1865 } 1866 1867 } catch (e) {} 1868 1869 1870 /* Useful debugging / analytics value */ 1871 1872 var resolvedAttribution = 1873 vtResolveAttribution(); 1874 1875 1876 payload.attribution_source = 1877 resolvedAttribution.utm_source; 1878 1879 payload.attribution_medium = 1880 resolvedAttribution.utm_medium; 1881 1882 1883 /* Form fields */ 1884 1885 var rawValues = {}; 1886 1887 1888 Object.keys( 1889 fieldMap || {} 1890 ).forEach( 1891 function (key) { 1892 1893 var el = 1894 document.getElementById( 1895 fieldMap[key] 1896 ); 1897 1898 1899 rawValues[key] = 1900 el 1901 ? el.value || '' 1902 : ''; 1903 1904 } 1905 ); 1906 1907 1908 if ( 1909 'email' in 1910 rawValues 1911 ) { 1912 1913 payload.email = 1914 ( 1915 rawValues.email || 1916 '' 1917 ) 1918 .toLowerCase() 1919 .trim(); 1920 1921 } 1922 1923 1924 payload.email = 1925 payload.email || 1926 ''; 1927 1928 1929 if ( 1930 'name' in 1931 rawValues 1932 ) { 1933 1934 payload.name = 1935 ( 1936 rawValues.name || 1937 '' 1938 ).trim(); 1939 1940 } 1941 1942 1943 payload.name = 1944 payload.name || 1945 ''; 1946 1947 1948 var email = 1949 payload.email; 1950 1951 1952 Object.keys( 1953 rawValues 1954 ).forEach( 1955 function (key) { 1956 1957 if ( 1958 key === 'name' || 1959 key === 'email' 1960 ) { 1961 return; 1962 } 1963 1964 1965 var val = 1966 rawValues[key]; 1967 1968 1969 if ( 1970 key === 'website' && 1971 val 1972 ) { 1973 1974 val = 1975 val.trim(); 1976 1977 1978 if ( 1979 val && 1980 !val.match( 1981 /^https?:\/\// 1982 ) 1983 ) { 1984 1985 val = 1986 'https://' + 1987 val; 1988 1989 } 1990 1991 } 1992 1993 1994 payload[key] = 1995 typeof val === 1996 'string' 1997 ? val.trim() 1998 : val; 1999 2000 } 2001 ); 2002 2003 2004 if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(payload.email) || !String(payload.name).trim()) { 2005 return Promise.reject(new Error('A valid email and name are required')); 2006 } 2007 payload.submission_id = payload.submission_id || ('vt-' + Date.now() + '-' + Math.random().toString(36).slice(2)); 2008 2009 /* Meta Lead conversion */ 2010 2011 window.vtTrackMetaLead(); 2012 2013 2014 var webhookPromise = 2015 window.vtSendWebhook( 2016 payload 2017 ); 2018 2019 2020 return Promise.resolve(webhookPromise).then(function (result) { 2021 if (options.redirect !== false) { 2022 window.location.href = window.vtBuildSiteUrl(CONTACTED_URL, 2023 'name=' + encodeURIComponent(payload.name) + '&email=' + encodeURIComponent(payload.email)); 2024 } 2025 return { payload: payload, delivery: result }; 2026 }); 2027 2028 }; 2029 2030 2031 /* âââ CALENDLY POPUP âââââââââââââââââââââââââââââââââââââââââââââââ */ 2032 2033 2034 var CAL_ASSETS = 2035 'https://assets.calendly.com/assets/external/'; 2036 2037 2038 var BOOK_SELECTOR = 2039 '.vt-book-btn, .nav-cta, .calendly-button, .rl-btnh'; 2040 2041 2042 function vtLoadCalAssets(cb) { 2043 2044 if ( 2045 window.Calendly 2046 ) { 2047 2048 if (cb) { 2049 cb(); 2050 } 2051 2052 return; 2053 2054 } 2055 2056 2057 if ( 2058 !document.querySelector( 2059 'link[data-vt-cal]' 2060 ) 2061 ) { 2062 2063 var l = 2064 document.createElement( 2065 'link' 2066 ); 2067 2068 2069 l.rel = 2070 'stylesheet'; 2071 2072 l.href = 2073 CAL_ASSETS + 2074 'widget.css'; 2075 2076 l.setAttribute( 2077 'data-vt-cal', 2078 '1' 2079 ); 2080 2081 document.head.appendChild( 2082 l 2083 ); 2084 2085 } 2086 2087 2088 var s = 2089 document.querySelector( 2090 'script[data-vt-cal]' 2091 ); 2092 2093 2094 if (!s) { 2095 2096 s = 2097 document.createElement( 2098 'script' 2099 ); 2100 2101 2102 s.src = 2103 CAL_ASSETS + 2104 'widget.js'; 2105 2106 s.async = 2107 true; 2108 2109 s.setAttribute( 2110 'data-vt-cal', 2111 '1' 2112 ); 2113 2114 2115 document.head.appendChild( 2116 s 2117 ); 2118 2119 } 2120 2121 2122 if (cb) { 2123 2124 s.addEventListener( 2125 'load', 2126 cb 2127 ); 2128 2129 s.addEventListener( 2130 'error', 2131 cb 2132 ); 2133 2134 } 2135 2136 } 2137 2138 2139 window.vtCalOpen = 2140 function (url) { 2141 2142 vtLoadCalAssets( 2143 function () { 2144 2145 if ( 2146 window.Calendly && 2147 typeof window.Calendly 2148 .initPopupWidget === 2149 'function' 2150 ) { 2151 2152 window.Calendly 2153 .initPopupWidget({ 2154 url: url 2155 }); 2156 2157 } else { 2158 2159 window.location.assign(url); 2160 2161 } 2162 2163 } 2164 ); 2165 2166 }; 2167 2168 2169 window.vtCalClose = 2170 function () { 2171 2172 if ( 2173 window.Calendly && 2174 typeof window.Calendly 2175 .closePopupWidget === 2176 'function' 2177 ) { 2178 2179 window.Calendly 2180 .closePopupWidget(); 2181 2182 } 2183 2184 }; 2185 2186 2187 /* Warm Calendly assets */ 2188 2189 function vtWarm(e) { 2190 2191 var t = 2192 e.target; 2193 2194 2195 if ( 2196 t && 2197 t.closest && 2198 t.closest( 2199 BOOK_SELECTOR 2200 ) 2201 ) { 2202 2203 vtLoadCalAssets(); 2204 2205 } 2206 2207 } 2208 2209 2210 document.addEventListener( 2211 'mouseover', 2212 vtWarm, 2213 true 2214 ); 2215 2216 2217 document.addEventListener( 2218 'touchstart', 2219 vtWarm, 2220 { 2221 capture: true, 2222 passive: true 2223 } 2224 ); 2225 2226 2227 /* Booking click */ 2228 2229 document.addEventListener( 2230 2231 'click', 2232 2233 function (e) { 2234 2235 var btn = 2236 e.target.closest( 2237 BOOK_SELECTOR 2238 ); 2239 2240 2241 if (!btn) { 2242 return; 2243 } 2244 2245 2246 e.preventDefault(); 2247 2248 e.stopPropagation(); 2249 2250 2251 /* Meta Lead conversion */ 2252 2253 window.vtTrackMetaLead(); 2254 2255 2256 window.vtCalOpen( 2257 window 2258 .vtBuildCalendlyPopupUrl() 2259 ); 2260 2261 }, 2262 2263 true 2264 2265 ); 2266 2267 2268 /* Escape closes popup */ 2269 2270 document.addEventListener( 2271 'keydown', 2272 function (e) { 2273 2274 if ( 2275 e.key === 2276 'Escape' 2277 ) { 2278 2279 window.vtCalClose(); 2280 2281 } 2282 2283 } 2284 ); 2285 2286})(); 2287 2288 2289/* âââ MISC UI ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 2290 2291(function () { 2292 2293 window.vtToggle = 2294 function () { 2295 2296 var popup = 2297 document.getElementById( 2298 'vt-popup' 2299 ); 2300 2301 2302 if (!popup) { 2303 return; 2304 } 2305 2306 2307 popup.classList.toggle( 2308 'open' 2309 ); 2310 2311 }; 2312 2313})(); 2314</script>
2314 2315<!-- Google Tag Manager -->
2316<script>
vendor: 415 bytes, lines 2316-2326
2316 2317 (function (w, d, s, l, i) { 2318 w[l] = w[l] || []; 2319 w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); 2320 var f = d.getElementsByTagName(s)[0], 2321 j = d.createElement(s), 2322 dl = l != 'dataLayer' ? '&l=' + l : ''; 2323 j.async = true; 2324 j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 2325 f.parentNode.insertBefore(j, f); 2326 })(window, document, 'script', 'dataLayer', '
2326GTM-TM59XZLC
vendor: 4 bytes, line 2326
2326');
2327</script>
2327 2328<!-- End Google Tag Manager -->
2329<script type="text/javascript"> 2330 (function (c, l, a, r, i, t, y) { 2331 c[a] = 2332 c[a] || 2333 function () { 2334 (c[a].q = c[a].q || []).push(arguments); 2335 }; 2336 t = l.createElement(r); 2337 t.async = 1; 2338 t.src = 'https://www.clarity.ms/tag/' + i; 2339 y = l.getElementsByTagName(r)[0]; 2340 y.parentNode.insertBefore(t, y); 2341 })(window, document, 'clarity', 'script', 'xolf7gqmu0'); 2342</script>
2342 2343<!-- Twitter conversion tracking base code -->
2344<script> 2345 !(function (e, t, n, s, u, a) { 2346 e.twq || 2347 ((s = e.twq = 2348 function () { 2349 s.exe ? s.exe.apply(s, arguments) : s.queue.push(arguments); 2350 }), 2351 (s.version = '1.1'), 2352 (s.queue = []), 2353 (u = t.createElement(n)), 2354 (u.async = !0), 2355 (u.src = 'https://static.ads-twitter.com/uwt.js'), 2356 (a = t.getElementsByTagName(n)[0]), 2357 a.parentNode.insertBefore(u, a)); 2358 })(window, document, 'script'); 2359 twq('config', 'orzga'); 2360</script>
2360 2361<!-- End Twitter conversion tracking base code -->
2362<script> 2363 !(function () { 2364 var reb2b = (window.reb2b = window.reb2b || []); 2365 if (reb2b.invoked) return; 2366 reb2b.invoked = true; 2367 reb2b.methods = ['identify', 'collect']; 2368 reb2b.factory = function (method) { 2369 return function () { 2370 var args = Array.prototype.slice.call(arguments); 2371 args.unshift(method); 2372 reb2b.push(args); 2373 return reb2b; 2374 }; 2375 }; 2376 for (var i = 0; i < reb2b.methods.length; i++) { 2377 var key = reb2b.methods[i]; 2378 reb2b[key] = reb2b.factory(key); 2379 } 2380 reb2b.load = function (key) { 2381 var script = document.createElement('script'); 2382 script.type = 'text/javascript'; 2383 script.async = true; 2384 script.src = 'https://s3-us-west-2.amazonaws.com/b2bjsstore/b/' + key + '/Y46DJ4HJJ161.js.gz'; 2385 var first = document.getElementsByTagName('script')[0]; 2386 first.parentNode.insertBefore(script, first); 2387 }; 2388 reb2b.SNIPPET_VERSION = '1.0.1'; 2389 reb2b.load('Y46DJ4HJJ161'); 2390 })(); 2391</script>
2391 2392<!-- Reddit Pixel -->
2393<script> 2394 !(function (w, d) { 2395 if (!w.rdt) { 2396 var p = (w.rdt = function () { 2397 p.sendEvent ? p.sendEvent.apply(p, arguments) : p.callQueue.push(arguments); 2398 }); 2399 p.callQueue = []; 2400 var t = d.createElement('script'); 2401 ((t.src = 'https://www.redditstatic.com/ads/pixel.js'), (t.async = !0)); 2402 var s = d.getElementsByTagName('script')[0]; 2403 s.parentNode.insertBefore(t, s); 2404 } 2405 })(window, document); 2406 rdt('init', 'a2_gjhmhmki42mt'); 2407 rdt('track', 'PageVisit'); 2408</script>
2408 2409<!-- DO NOT MODIFY UNLESS TO REPLACE A USER IDENTIFIER --> 2410<!-- End Reddit Pixel --> 2411<!-- Meta Pixel Code -->
2412<script> 2413 !(function (f, b, e, v, n, t, s) { 2414 if (f.fbq) return; 2415 n = f.fbq = function () { 2416 n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments); 2417 }; 2418 if (!f._fbq) f._fbq = n; 2419 n.push = n; 2420 n.loaded = !0; 2421 n.version = '2.0'; 2422 n.queue = []; 2423 t = b.createElement(e); 2424 t.async = !0; 2425 t.src = v; 2426 s = b.getElementsByTagName(e)[0]; 2427 s.parentNode.insertBefore(t, s); 2428 })(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js'); 2429 fbq('init', '149301424004448'); 2430 fbq('track', 'PageView'); 2431</script>
2431 2432<noscript><img height="1" width="1" style="display: none" src="https://www.facebook.com/tr?id=149301424004448&ev=PageView&noscript=1" /></noscript> 2433<!-- End Meta Pixel Code --> 2434<!-- Apollo Pixel Code Start -->
2435<script> 2436 function initApollo() { 2437 var n = Math.random().toString(36).substring(7), 2438 o = document.createElement('script'); 2439 ((o.src = 'https://assets.apollo.io/micro/website-tracker/tracker.iife.js?nocache=' + n), 2440 (o.async = !0), 2441 (o.defer = !0), 2442 (o.onload = function () { 2443 window.trackingFunctions.onLoad({ appId: '6631180bd6844001c798a60c' }); 2444 }), 2445 document.head.appendChild(o)); 2446 } 2447 initApollo(); 2448 2449 2450 2451</script>
2451 2452<!-- Apollo Pixel Code End --> 2453 2454<!-- Chat gpt -->
2455<script> 2456 window.oaiq = window.oaiq || function () { 2457 (window.oaiq.q = window.oaiq.q || []).push(arguments); 2458 }; 2459 oaiq("init", { pixelId: "FcGU8ooMkLeFRWmmBpb7HF" }); 2460</script>
vendor: 1 bytes, line 2460
2460
2461<script async src="https://bzrcdn.openai.com/sdk/oaiq.min.js"></script>
2461 2462<!-- chat gpt end -->
2463<script> 2464(function () { 2465 function init() { 2466 if (typeof window.vtBindLeadForm !== "function") { console.error("[vt] Install the fixed global head code first"); return; } 2467 window.vtBindLeadForm({"formId": "wf-form-Pricing---Form", "formName": "pricing", "fields": {"first": "First-Name-4", "last": "Last-Name-4", "email": "Email-5", "phone": "Phone-number-2", "website": "Website", "how": "How"}}); 2468 } 2469 if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", init); else init(); 2470})(); 2471 2472</script>
2472 2473<meta property="og:url" content="https://www.virtustant.com/pricing" />
2474<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F652d31f3dc22d7b4ee708e44%2F6a5c022e43a0b1ee56eb502f%2Fclarity_script-1.1.2.js" type="text/javascript"></script>
2474<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a8609cdb612f9f008e6c97c%2Fahrefswebanalytics-1.0.0.js" type="text/javascript"></script>
2474<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a1dba27e54d59ac6cd20aea%2Frevafaqschema-0.0.1.js" type="text/javascript"></script>
2474<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a2333c3178ec14b5829dce1%2Fvirtustantschema-1.0.0-1780692107254.js" type="text/javascript"></script>
2474<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a2607fb0b3e9c6cae9992d9%2Fcover_aspect_ratio_fix-1.0.0-1780877769843.js" type="text/javascript"></script>
2474<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a860a629cf7ec3efa898070%2Fvsrrefine-1.0.1.js" type="text/javascript"></script>
2474<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a2fb4414bc14d1149160bc0%2Fvsrcards1-1.0.0-1781537843852.js" type="text/javascript"></script>
2474<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a3549906d21b2314d2ed168%2Foutsourcevafaq-1.0.0.js" type="text/javascript"></script>
2474<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a3091f50a8ccf650007362c%2Frolespolish3-1.0.0-1785600387629.js" type="text/javascript"></script>
2474<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a6bca4bbe23e15b7ae980fd%2Fvtdedupetitle-1.0.0.js" type="text/javascript"></script>
2474<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F6920e91076f71b3b0ca97a18%2F6a25c59150de93d0a79918be%2Fgoogle_tag-0.0.3.js" type="text/javascript" data-gtag-id="AW-11153406344"></script>
2474</head><body class="body-3"><div class="div-block-68"><div data-duration="400" data-animation="default" data-collapse="medium" data-easing="ease" data-easing2="ease" role="banner" class="navbar-5 w-nav"><div class="container-15 w-container"><a href="/" class="brand-5 w-nav-brand"><img src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/66fecfd9dda6ca6d78d7cddb_256x256.png" loading="lazy" width="32" height="32" alt="Virtustant icon" class="nav-logo-img"/><div class="nav-brand-text">Virtustant</div></a><nav role="navigation" class="nav-menu-4 w-nav-menu"><a href="/services" class="new-nav-link w-nav-link">Services</a><a href="/roles" class="new-nav-link">Roles</a><a href="/about-us" class="new-nav-link w-nav-link">About us</a><a href="/pricing" aria-current="page" class="new-nav-link w-nav-link w--current">Pricing</a><a href="/testimonials" class="new-nav-link">Testimonials</a><a href="/contact-us" class="new-nav-link w-nav-link">Contact Us</a><a href="/referral" class="new-nav-link w-nav-link">Refer a Business</a><a href="https://calendly.com/d/cm4v-bxb-7hy/discovery-call-virtustant?utm_source=webpage" class="nav-cta mobile-cta calendly-button w-button">Book a free consultation</a><a href="https://jobs.virtustant.com/" class="nav-apply-link">Apply for a Job</a></nav><a href="https://calendly.com/d/cm4v-bxb-7hy/discovery-call-virtustant" class="nav-cta calendly-button w-button">Book a free consultation</a><div class="menu-button-3 w-nav-button"><div class="icon-4 w-icon-nav-menu"></div></div></div><div class="w-embed w-script"><style> 2475.vt-nav-track{position:absolute;left:20px;right:20px;bottom:6px;height:3px;border-radius:99px;overflow:hidden;display:none;pointer-events:none} 2476.vt-nav-track b{display:block;height:100%;width:100%;border-radius:99px;background:#F26522;transform:scaleX(0);transform-origin:0 50%;opacity:0} 2477@supports (animation-timeline: scroll()){ 2478.vt-nav-track{display:block} 2479.vt-nav-track b{animation:vtnp linear both;animation-timeline:scroll(root)} 2480} 2481@keyframes vtnp{0%{transform:scaleX(0);opacity:0}3%{opacity:1}100%{transform:scaleX(1);opacity:1}} 2482@media(max-width:767px){.vt-nav-track{left:16px;right:16px;bottom:4px}} 2483.container-15.w-container::before,.container-15.w-container::after{display:none} 2484.menu-button-3 .w-icon-nav-menu{color:#232323 !important;position:relative;display:block} 2485.menu-button-3 .w-icon-nav-menu::before{display:block;transition:opacity .16s ease,transform .24s ease} 2486.menu-button-3.w--open .w-icon-nav-menu::before{opacity:0;transform:rotate(90deg) scale(.6)} 2487.menu-button-3 .w-icon-nav-menu::after{content:"\2715";position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;font-family:Arial,Helvetica,sans-serif;font-weight:400;font-size:21px;opacity:0;transform:rotate(-90deg) scale(.6);transition:opacity .18s ease,transform .24s ease} 2488.menu-button-3.w--open .w-icon-nav-menu::after{opacity:1;transform:rotate(0deg) scale(1)} 2489.menu-button-3.w--open{background-color:transparent !important;color:#232323} 2490@media(max-width:991px){ 2491.w-nav-overlay .nav-cta.mobile-cta{display:block;width:100%;text-align:center;padding:15px 18px;font-size:16px;margin-top:28px} 2492.w-nav-overlay .nav-apply-link{display:block;width:100%;text-align:center;font-size:16px;font-weight:600;color:#232323 !important;background:#fff;border:1px solid rgba(0,0,0,.14);border-radius:999px;padding:14px 18px;margin-top:4px;text-decoration:none;opacity:1 !important} 2493.w-nav-overlay [data-nav-menu-open]{animation:vtsheet .28s ease both} 2494} 2495@keyframes vtsheet{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}} 2496@media (min-width:992px) and (max-width:1079px){.nav-menu-4 .nav-apply-link{display:none}} 2497</style> 2498<div class="vt-nav-track"><b></b></div>
2499<script>window.Webflow=window.Webflow||[];window.Webflow.push(function(){try{var n=document.querySelector('.w-nav[data-collapse]');if(n){n.setAttribute('data-duration','100');}var d=window.Webflow.require&&window.Webflow.require('navbar');if(d&&d.destroy&&d.ready){d.destroy();d.ready();}}catch(e){}});</script>
2499</div></div></div><section class="section-7"><div class="w-embed w-script"><!-- VIRTUSTANT PRICING - SALARY ESTIMATOR (final) 2500 Paste this whole block into the Pricing page estimator Custom Code 2501 embed, replacing the current code. Region multipliers are in the 2502 REGION object near the bottom of the script, edit freely. --> 2503<style> 2504 .ve { 2505 --orange: #ff5a1f; 2506 --ink: #16161a; 2507 --dim: rgba(0, 0, 0, 0.55); 2508 --mut: rgba(0, 0, 0, 0.42); 2509 --line: rgba(0, 0, 0, 0.1); 2510 --soft: #f7f7f8; 2511 box-sizing: border-box; 2512 max-width: 980px; 2513 margin: 0 auto; 2514 color: var(--ink); 2515 font-family: 'Montserrat', system-ui, sans-serif; 2516 padding: 44px 24px 32px; 2517 text-align: center; 2518 } 2519 .ve *, 2520 .ve *::before, 2521 .ve *::after { 2522 box-sizing: border-box; 2523 } 2524 .ve-eyebrow { 2525 display: inline-flex; 2526 align-items: center; 2527 gap: 7px; 2528 font-size: 12px; 2529 font-weight: 600; 2530 color: var(--orange); 2531 background: rgba(255, 90, 31, 0.08); 2532 border: 1px solid rgba(255, 90, 31, 0.25); 2533 border-radius: 999px; 2534 padding: 7px 13px; 2535 margin: 0 0 14px; 2536 } 2537 .ve-h { 2538 font-family: 'Montserrat', system-ui, sans-serif; 2539 font-weight: 600; 2540 font-size: clamp(2rem, 5.4vw, 4rem); 2541 line-height: 1.02; 2542 letter-spacing: -0.035em; 2543 color: #000; 2544 text-align: center; 2545 margin: 0 0 24px; 2546 } 2547 .ve-h em { 2548 font-family: 'RocaTwo', Georgia, serif; 2549 font-style: italic; 2550 font-weight: 400; 2551 color: var(--orange); 2552 } 2553 .ve-card { 2554 background: #fff; 2555 border: 1px solid var(--line); 2556 border-radius: 18px; 2557 box-shadow: 0 12px 34px rgba(0, 0, 0, 0.05); 2558 text-align: left; 2559 } 2560 .ve-head { 2561 display: flex; 2562 align-items: center; 2563 justify-content: space-between; 2564 padding: 18px 28px; 2565 border-bottom: 1px solid var(--line); 2566 } 2567 .ve-head h3 { 2568 margin: 0; 2569 font-size: 15px; 2570 font-weight: 600; 2571 } 2572 .ve-live { 2573 display: inline-flex; 2574 align-items: center; 2575 gap: 7px; 2576 font-size: 12px; 2577 color: var(--dim); 2578 } 2579 .ve-live::before { 2580 content: ''; 2581 width: 7px; 2582 height: 7px; 2583 border-radius: 50%; 2584 background: #2bb673; 2585 } 2586 .ve-main { 2587 display: grid; 2588 grid-template-columns: 1.4fr 1fr; 2589 gap: 40px; 2590 padding: 30px 28px; 2591 align-items: stretch; 2592 } 2593 .ve-fields { 2594 display: flex; 2595 flex-direction: column; 2596 gap: 22px; 2597 } 2598 .ve-field { 2599 min-width: 0; 2600 } 2601 .ve-lbl { 2602 display: flex; 2603 align-items: center; 2604 gap: 7px; 2605 font-size: 11px; 2606 font-weight: 600; 2607 letter-spacing: 0.1em; 2608 text-transform: uppercase; 2609 color: var(--dim); 2610 margin: 0 0 9px; 2611 } 2612 .ve-lbl svg { 2613 width: 15px; 2614 height: 15px; 2615 stroke: var(--mut); 2616 fill: none; 2617 } 2618 .ve-combo { 2619 position: relative; 2620 } 2621 .ve-combo > svg { 2622 position: absolute; 2623 left: 13px; 2624 top: 50%; 2625 transform: translateY(-50%); 2626 width: 16px; 2627 height: 16px; 2628 stroke: var(--mut); 2629 fill: none; 2630 pointer-events: none; 2631 } 2632 .ve-combo input { 2633 width: 100%; 2634 padding: 13px 14px 13px 38px; 2635 border: 1px solid var(--line); 2636 border-radius: 10px; 2637 background: #fff; 2638 font-size: 14px; 2639 font-weight: 600; 2640 color: var(--ink); 2641 font-family: inherit; 2642 } 2643 .ve-combo input:focus { 2644 outline: none; 2645 border-color: var(--orange); 2646 box-shadow: 0 0 0 3px rgba(255, 90, 31, 0.14); 2647 } 2648 .ve-list { 2649 position: absolute; 2650 top: calc(100% + 6px); 2651 left: 0; 2652 right: 0; 2653 background: #fff; 2654 border: 1px solid var(--line); 2655 border-radius: 12px; 2656 box-shadow: 0 14px 34px rgba(0, 0, 0, 0.12); 2657 max-height: 248px; 2658 overflow: auto; 2659 z-index: 20; 2660 padding: 6px; 2661 display: none; 2662 } 2663 .ve-list.open { 2664 display: block; 2665 } 2666 .ve-item { 2667 display: flex; 2668 align-items: center; 2669 justify-content: space-between; 2670 gap: 10px; 2671 padding: 9px 11px; 2672 border-radius: 8px; 2673 font-size: 13.5px; 2674 font-weight: 500; 2675 cursor: pointer; 2676 } 2677 .ve-item:hover { 2678 background: var(--soft); 2679 } 2680 .ve-item span { 2681 font-size: 11px; 2682 color: var(--mut); 2683 font-weight: 500; 2684 } 2685 .ve-empty { 2686 padding: 14px; 2687 text-align: center; 2688 color: var(--mut); 2689 font-size: 13px; 2690 display: none; 2691 } 2692 .ve-seg { 2693 display: grid; 2694 gap: 8px; 2695 } 2696 .ve-seg.s3 { 2697 grid-template-columns: 1fr 1fr 1fr; 2698 } 2699 .ve-opt { 2700 display: flex; 2701 align-items: center; 2702 justify-content: center; 2703 gap: 6px; 2704 padding: 11px 6px; 2705 border: 1px solid var(--line); 2706 border-radius: 10px; 2707 background: #fff; 2708 font-size: 12.5px; 2709 font-weight: 600; 2710 color: var(--ink); 2711 cursor: pointer; 2712 transition: 0.15s; 2713 text-align: center; 2714 line-height: 1.15; 2715 } 2716 .ve-opt svg { 2717 width: 15px; 2718 height: 15px; 2719 flex: none; 2720 stroke: currentColor; 2721 fill: none; 2722 } 2723 .ve-opt:hover { 2724 border-color: rgba(0, 0, 0, 0.28); 2725 } 2726 .ve-opt.on { 2727 background: var(--orange); 2728 border-color: var(--orange); 2729 color: #fff; 2730 } 2731 .ve-opt.on svg { 2732 stroke: #fff !important; 2733 } 2734 .ve-switch { 2735 position: relative; 2736 display: grid; 2737 grid-template-columns: 1fr 1fr; 2738 background: var(--soft); 2739 border: 1px solid var(--line); 2740 border-radius: 11px; 2741 padding: 4px; 2742 } 2743 .ve-sw-opt { 2744 position: relative; 2745 z-index: 1; 2746 background: none; 2747 border: none; 2748 padding: 9px; 2749 font-size: 13px; 2750 font-weight: 600; 2751 color: var(--dim); 2752 cursor: pointer; 2753 font-family: inherit; 2754 transition: color 0.2s; 2755 display: flex; 2756 align-items: center; 2757 justify-content: center; 2758 gap: 6px; 2759 } 2760 .ve-sw-opt svg { 2761 width: 15px; 2762 height: 15px; 2763 stroke: currentColor; 2764 fill: none; 2765 } 2766 .ve-sw-opt.on { 2767 color: #fff; 2768 } 2769 .ve-sw-thumb { 2770 position: absolute; 2771 top: 4px; 2772 left: 4px; 2773 width: calc(50% - 4px); 2774 height: calc(100% - 8px); 2775 background: var(--orange); 2776 border-radius: 8px; 2777 transition: transform 0.22s cubic-bezier(0.3, 0.7, 0.3, 1); 2778 z-index: 0; 2779 box-shadow: 0 3px 8px rgba(255, 90, 31, 0.3); 2780 } 2781 .ve-switch[data-v='full'] .ve-sw-thumb { 2782 transform: translateX(100%); 2783 } 2784 .ve-reg { 2785 display: grid; 2786 grid-template-columns: 1fr 1fr; 2787 gap: 8px; 2788 } 2789 .ve-reg .ve-opt { 2790 justify-content: flex-start; 2791 padding: 11px 13px; 2792 font-size: 13px; 2793 } 2794 .ve-reg .ve-opt svg {
2795 width: 20px; 2796 height: 20px; 2797 fill: currentColor; 2798 stroke: none; 2799 } 2800 .r-latam svg { 2801 fill: #ff7a45; 2802 } 2803 .r-seasia svg { 2804 fill: #1d9e75; 2805 } 2806 .r-safrica svg { 2807 fill: #ba7517; 2808 } 2809 .r-europe svg { 2810 fill: #378add; 2811 } 2812 .ve-reg .ve-opt.on svg { 2813 fill: #fff; 2814 } 2815 .ve-result { 2816 background: var(--soft); 2817 border-radius: 14px; 2818 padding: 34px 26px; 2819 display: flex; 2820 flex-direction: column; 2821 align-items: center; 2822 justify-content: center; 2823 text-align: center; 2824 } 2825 .ve-res-cap { 2826 font-size: 11px; 2827 font-weight: 600; 2828 letter-spacing: 0.14em; 2829 text-transform: uppercase; 2830 color: var(--mut); 2831 margin-bottom: 14px; 2832 } 2833 .ve-rate { 2834 font-size: 42px; 2835 font-weight: 700; 2836 letter-spacing: -0.025em; 2837 color: var(--orange); 2838 line-height: 1; 2839 white-space: nowrap; 2840 } 2841 .ve-rate span { 2842 font-size: 15px; 2843 font-weight: 500; 2844 color: var(--dim); 2845 } 2846 .ve-note { 2847 font-size: 13px; 2848 color: var(--dim); 2849 margin-top: 10px; 2850 min-height: 18px; 2851 } 2852 .ve-cta { 2853 display: inline-flex; 2854 align-items: center; 2855 gap: 8px; 2856 background: var(--orange); 2857 color: #fff; 2858 text-decoration: none; 2859 font-size: 14px; 2860 font-weight: 700; 2861 padding: 13px 22px; 2862 border-radius: 11px; 2863 margin-top: 24px; 2864 box-shadow: 0 6px 16px rgba(255, 90, 31, 0.25); 2865 } 2866 .ve-cta svg { 2867 width: 16px; 2868 height: 16px; 2869 stroke: #fff; 2870 fill: none; 2871 } 2872 .ve-sub { 2873 font-size: 12px; 2874 color: var(--mut); 2875 margin-top: 12px; 2876 } 2877 @media (max-width: 720px) { 2878 .ve { 2879 padding: 20px 10px; 2880 } 2881 .ve-h { 2882 margin-bottom: 18px; 2883 } 2884 .ve-main { 2885 grid-template-columns: 1fr; 2886 gap: 22px; 2887 padding: 22px 18px; 2888 } 2889 .ve-head { 2890 padding: 15px 18px; 2891 } 2892 .ve-result { 2893 padding: 26px 20px; 2894 } 2895 .ve-rate { 2896 font-size: 38px; 2897 } 2898 } 2899 @media (max-width: 480px) { 2900 .ve-main { 2901 padding: 20px 14px; 2902 gap: 20px; 2903 } 2904 .ve-eyebrow { 2905 font-size: 11px; 2906 padding: 6px 11px; 2907 } 2908 .ve-opt { 2909 font-size: 11.5px; 2910 padding: 10px 4px; 2911 gap: 4px; 2912 } 2913 .ve-opt svg { 2914 width: 13px; 2915 height: 13px; 2916 } 2917 .ve-reg .ve-opt { 2918 font-size: 12px; 2919 padding: 10px 11px; 2920 } 2921 .ve-reg .ve-opt svg { 2922 width: 17px; 2923 height: 17px; 2924 } 2925 .ve-sw-opt { 2926 font-size: 12px; 2927 } 2928 } 2929</style> 2930<div class="ve"> 2931 <span class="ve-eyebrow" 2932 ><svg viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.2" fill="none" width="13" height="13"><path d="M20 6 9 17l-5-5" /></svg>Zero service fees · Lifetime replacement</span 2933 > 2934 <h1 class="ve-h">How much does it cost to hire <em>your next team member?</em></h1> 2935 <div class="ve-card"> 2936 <div class="ve-head"> 2937 <h3>Client Rate Estimator</h3> 2938 <span class="ve-live">Real time estimate</span> 2939 </div> 2940 <div class="ve-main"> 2941 <div class="ve-fields"> 2942 <div class="ve-field"> 2943 <div class="ve-lbl"> 2944 <svg viewBox="0 0 24 24" stroke-width="2"> 2945 <circle cx="12" cy="8" r="4" /> 2946 <path d="M4 21c0-4 3.6-6 8-6s8 2 8 6" /></svg 2947 >Role 2948 </div> 2949 <div class="ve-combo"> 2950 <svg viewBox="0 0 24 24" stroke-width="2"> 2951 <circle cx="11" cy="11" r="7" /> 2952 <path d="M21 21l-4.3-4.3" /> 2953 </svg> 2954 <input id="ve-search" type="text" placeholder="Search a role" autocomplete="off" /> 2955 <div class="ve-list" id="ve-list"></div> 2956 </div> 2957 </div> 2958 <div class="ve-field"> 2959 <div class="ve-lbl"> 2960 <svg viewBox="0 0 24 24" stroke-width="2"><path d="M4 20v-3M12 20v-9M20 20v-6" /></svg>Experience 2961 </div> 2962 <div class="ve-seg s3" id="ve-exp"> 2963 <div class="ve-opt" data-v="entry"> 2964 <svg viewBox="0 0 24 24" stroke-width="2.4" stroke-linecap="round"> 2965 <path d="M6 20v-4" /> 2966 <path d="M12 20v-4" opacity=".3" /> 2967 <path d="M18 20v-4" opacity=".3" /></svg 2968 >Entry 2969 </div> 2970 <div class="ve-opt on" data-v="mid"> 2971 <svg viewBox="0 0 24 24" stroke-width="2.4" stroke-linecap="round"> 2972 <path d="M6 20v-4" /> 2973 <path d="M12 20v-8" /> 2974 <path d="M18 20v-4" opacity=".3" /></svg 2975 >Mid 2976 </div> 2977 <div class="ve-opt" data-v="senior"> 2978 <svg viewBox="0 0 24 24" stroke-width="2.4" stroke-linecap="round"> 2979 <path d="M6 20v-4" /> 2980 <path d="M12 20v-8" /> 2981 <path d="M18 20v-12" /></svg 2982 >Senior 2983 </div> 2984 </div> 2985 </div> 2986 <div class="ve-field"> 2987 <div class="ve-lbl"> 2988 <svg viewBox="0 0 24 24" stroke-width="2"> 2989 <circle cx="12" cy="12" r="9" /> 2990 <path d="M12 7v5l3 2" /></svg 2991 >Schedule 2992 </div> 2993 <div class="ve-switch" id="ve-sched" data-v="full"> 2994 <button class="ve-sw-opt" data-v="part" type="button"> 2995 <svg viewBox="0 0 24 24" stroke-width="2"> 2996 <circle cx="12" cy="12" r="9" /> 2997 <path d="M12 12V7" /> 2998 <path d="M12 12h4" /></svg 2999 >Part time 3000 </button> 3001 <button class="ve-sw-opt on" data-v="full" type="button"> 3002 <svg viewBox="0 0 24 24" stroke-width="2"> 3003 <rect x="4" y="5" width="16" height="16" rx="2" /> 3004 <path d="M4 9h16M9 3v4M15 3v4" /></svg 3005 >Full time 3006 </button>
3007 <span class="ve-sw-thumb"></span> 3008 </div> 3009 </div> 3010 <div class="ve-field"> 3011 <div class="ve-lbl"> 3012 <svg viewBox="0 0 24 24" stroke-width="2"><path d="M21 11.5a8 8 0 0 1-11.6 7.1L3 21l2.4-6.4A8 8 0 1 1 21 11.5Z" /></svg>English level 3013 </div> 3014 <div class="ve-seg s3" id="ve-eng"> 3015 <div class="ve-opt" data-v="conv"> 3016 <svg viewBox="0 0 24 24" stroke-width="2"><path d="M21 11.5a8 8 0 0 1-11.6 7.1L3 21l2.4-6.4A8 8 0 1 1 21 11.5Z" /></svg>Conversational 3017 </div> 3018 <div class="ve-opt on" data-v="fluent"> 3019 <svg viewBox="0 0 24 24" stroke-width="2"> 3020 <path d="M11 14H6l-3.2 3V6.5A2.5 2.5 0 0 1 5.3 4H11a2.5 2.5 0 0 1 2.5 2.5V11A2.5 2.5 0 0 1 11 14Z" /> 3021 <path d="M15.5 9H18a2.5 2.5 0 0 1 2.5 2.5V20l-3-2.5h-4.2A2.4 2.4 0 0 1 11 16.4" /></svg 3022 >Fluent 3023 </div> 3024 <div class="ve-opt" data-v="bilingual"> 3025 <svg viewBox="0 0 24 24" stroke-width="2"> 3026 <circle cx="12" cy="12" r="9" /> 3027 <path d="M3 12h18M12 3c2.6 2.7 2.6 15 0 18M12 3c-2.6 2.7-2.6 15 0 18" /></svg 3028 >Bilingual 3029 </div> 3030 </div> 3031 </div> 3032 <div class="ve-field"> 3033 <div class="ve-lbl"> 3034 <svg viewBox="0 0 24 24" stroke-width="2"> 3035 <circle cx="12" cy="12" r="9" /> 3036 <path d="M3 12h18M12 3c2.6 2.7 2.6 15 0 18M12 3c-2.6 2.7-2.6 15 0 18" /></svg 3037 >Region 3038 </div> 3039 <div class="ve-reg" id="ve-region"> 3040 <div class="ve-opt on r-latam" data-v="latam"> 3041 <svg viewBox="0 0 100 100"><path d="M45 12 C58 10 68 18 70 30 C74 40 70 50 64 60 C60 70 56 80 50 90 C46 96 42 88 42 78 C40 66 34 58 34 44 C33 30 34 18 45 12 Z" /></svg>Latin America 3042 </div> 3043 <div class="ve-opt r-seasia" data-v="seasia"> 3044 <svg viewBox="0 0 100 100"> 3045 <path d="M34 18 C40 16 47 21 47 28 C48 34 43 39 40 45 C37 50 36 55 32 52 C29 50 31 43 30 36 C29 29 28 23 34 18 Z" /> 3046 <circle cx="58" cy="50" r="6" /> 3047 <circle cx="70" cy="60" r="5" /> 3048 <circle cx="50" cy="64" r="5.5" /> 3049 <circle cx="64" cy="42" r="4" /></svg 3050 >Southeast Asia 3051 </div> 3052 <div class="ve-opt r-safrica" data-v="safrica"> 3053 <svg viewBox="0 0 100 100"><path d="M24 40 C30 30 45 30 57 33 C67 35 77 39 74 47 C72 55 62 59 54 65 C48 69 43 73 38 68 C32 62 29 57 26 49 C25 45 22 44 24 40 Z" /></svg>South Africa 3054 </div> 3055 <div class="ve-opt r-europe" data-v="europe"> 3056 <svg viewBox="0 0 100 100"><path d="M40 14 L52 18 L48 28 L60 26 L72 36 L62 44 L70 52 L56 56 L58 66 L46 62 L40 70 L34 58 L24 56 L30 44 L20 36 L34 32 L28 22 Z" /></svg>Europe 3057 </div> 3058 </div> 3059 </div> 3060 </div> 3061 <div class="ve-result"> 3062 <div class="ve-res-cap">Estimated all-in hourly rate</div> 3063 <div class="ve-rate" id="ve-rate">$0<span>/hr</span></div> 3064 <div class="ve-note" id="ve-note"></div> 3065 <a class="ve-cta vt-book-btn" href="https://calendly.com/d/cm4v-bxb-7hy/discovery-call-virtustant" target="_blank" rel="noopener" 3066 >Book a free consultation<svg viewBox="0 0 24 24" stroke-width="2"><path d="M5 12h14M13 6l6 6-6 6" /></svg 3067 ></a> 3068 <div class="ve-sub">No commitment · pay only if you hire</div> 3069 </div> 3070 </div> 3071 </div> 3072</div>
3073<script> 3074 (function () { 3075 var DATA = [ 3076 ['va', 'Virtual Assistant', 'Admin', 14, 7], 3077 ['ea', 'Executive Assistant', 'Admin', 17, 8.5], 3078 ['opsCoord', 'Operations Coordinator', 'Admin', 17], 3079 ['projAssist', 'Project Assistant', 'Admin', 15], 3080 ['sdr', 'SDR / BDR', 'Sales', 17, 8], 3081 ['accountExec', 'Account Executive', 'Sales', 23], 3082 ['salesOps', 'Sales Operations', 'Sales', 20], 3083 ['csManager', 'Customer Success Manager', 'Sales', 20], 3084 ['marketing', 'Marketing Specialist', 'Marketing', 19], 3085 ['contentMkt', 'Content Marketer', 'Marketing', 18], 3086 ['socialMedia', 'Social Media Manager', 'Marketing', 17, 8], 3087 ['seoSpec', 'SEO Specialist', 'Marketing', 19], 3088 ['paidAds', 'Paid Ads Specialist', 'Marketing', 20], 3089 ['fullstack', 'Full stack Developer', 'Engineering', 25, 8], 3090 ['frontend', 'Frontend Developer', 'Engineering', 23, 8], 3091 ['backend', 'Backend Developer', 'Engineering', 25, 8], 3092 ['qa', 'QA Engineer', 'Engineering', 19], 3093 ['devops', 'DevOps Engineer', 'Engineering', 25], 3094 ['graphic', 'Graphic Designer', 'Design', 17, 8], 3095 ['ux', 'UX/UI Designer', 'Design', 22, 8], 3096 ['productDsg', 'Product Designer', 'Design', 24, 8], 3097 ['motion', 'Motion Designer', 'Design', 20, 8], 3098 ['csRep', 'Customer Service Rep', 'Support', 13, 7], 3099 ['csLead', 'CS Team Lead', 'Support', 18], 3100 ['support', 'Technical Support', 'Support', 17], 3101 ['bookkeep', 'Bookkeeper', 'Finance', 16, 8.5], 3102 ['staffAcct', 'Staff Accountant', 'Finance', 20], 3103 ['finAnalyst', 'Financial Analyst', 'Finance', 22], 3104 ['controller', 'Controller', 'Finance', 25], 3105 ]; 3106 var MAP = {}; 3107 DATA.forEach(function (d) { 3108 MAP[d[0]] = { label: d[1], cat: d[2], ceil: d[3], floor: d[4] }; 3109 }); 3110 var FLOOR = 7, 3111 EB = 0.4, 3112 MB = 0.72, 3113 PART = 0.15; 3114 var ENG = { conv: 1, fluent: 1.08, bilingual: 1.16 }; 3115 /* Region multiplier. Latin America is the base (1.00). Edit to your real pricing. */ 3116 var REGION = { latam: 1, seasia: 0.85, safrica: 0.9, europe: 1.15 }; 3117 var search = document.getElementById('ve-search'), 3118 list = document.getElementById('ve-list'), 3119 rate = document.getElementById('ve-rate'), 3120 note = document.getElementById('ve-note'); 3121 var sel = 'va', 3122 aExp = 'mid', 3123 aSched = 'full', 3124 aEng = 'fluent', 3125 aReg = 'latam', 3126 items = []; 3127 DATA.forEach(function (d) { 3128 var i = document.createElement('div'); 3129 i.className = 've-item'; 3130 i.innerHTML = '<b>' + d[1] + '</b><span>' + d[2] + '</span>'; 3131 i.addEventListener('mousedown', function (e) { 3132 e.preventDefault(); 3133 pick(d[0]); 3134 }); 3135 list.appendChild(i); 3136 items.push(i); 3137 }); 3138 var empty = document.createElement('div'); 3139 empty.className = 've-empty'; 3140 empty.textContent = 'No roles match. We staff custom roles too.'; 3141 list.appendChild(empty); 3142 function filt(q) { 3143 q = q.toLowerCase(); 3144 var any = false; 3145 items.forEach(function (c, n) { 3146 var m = (DATA[n][1] + ' ' + DATA[n][2]).toLowerCase().indexOf(q) > -1; 3147 c.style.display = m ? '' : 'none'; 3148 if (m) any = true; 3149 }); 3150 empty.style.display = any ? 'none' : 'block'; 3151 } 3152 function pick(id) { 3153 sel = id; 3154 search.value = MAP[id].label; 3155 list.classList.remove('open'); 3156 calc(); 3157 } 3158 search.addEventListener('focus', function () { 3159 filt(''); 3160 list.classList.add('open'); 3161 search.select(); 3162 }); 3163 search.addEventListener('input', function () { 3164 filt(search.value); 3165 list.classList.add('open'); 3166 }); 3167 document.addEventListener('click', function (e) { 3168 if (!e.target.closest('.ve-combo')) list.classList.remove('open'); 3169 }); 3170 function seg(id, cb) { 3171 var g = document.getElementById(id); 3172 g.addEventListener('click', function (e) { 3173 var b = e.target.closest('[data-v]'); 3174 if (!b) return; 3175 g.querySelectorAll('[data-v]').forEach(function (x) { 3176 x.classList.remove('on'); 3177 }); 3178 b.classList.add('on'); 3179 cb(b.dataset.v); 3180 calc(); 3181 }); 3182 } 3183 seg('ve-exp', function (v) { 3184 aExp = v; 3185 }); 3186 seg('ve-eng', function (v) { 3187 aEng = v; 3188 }); 3189 seg('ve-region', function (v) { 3190 aReg = v; 3191 }); 3192 var sw = document.getElementById('ve-sched'); 3193 sw.addEventListener('click', function (e) { 3194 var b = e.target.closest('.ve-sw-opt'); 3195 if (!b) return; 3196 sw.dataset.v = b.dataset.v; 3197 sw.querySelectorAll('.ve-sw-opt').forEach(function (x) { 3198 x.classList.toggle('on', x === b); 3199 }); 3200 aSched = b.dataset.v; 3201 calc(); 3202 }); 3203 function tiers(r) { 3204 if (r._t) return r._t; 3205 var fl = r.floor || FLOOR, 3206 ce = r.ceil; 3207 if (ce < fl + 4) ce = fl + 4; 3208 var s = ce - fl, 3209 e = fl + Math.round(s * EB), 3210 m = fl + Math.round(s * MB); 3211 if (e <= fl) e = fl + 1; 3212 if (m <= e) m = e + 1; 3213 if (ce <= m) ce = m + 1; 3214 return (r._t = { entry: [fl, e], mid: [e + 1, m], senior: [m + 1, ce] }); 3215 } 3216 function calc() { 3217 var r = MAP[sel]; 3218 if (!r) return; 3219 var b = tiers(r)[aExp]; 3220 var mult = ENG[aEng] * REGION[aReg] * (aSched === 'part' ? 1 + PART : 1); 3221 var roleFloor = r.floor || FLOOR; 3222 var lo = Math.max(roleFloor, Math.round(b[0] * mult)), 3223 hi = Math.max(roleFloor, Math.round(b[1] * mult)); 3224 if (lo >= hi) hi = lo + 1; 3225 rate.innerHTML = '$' + (lo % 1 ? lo.toFixed(2) : lo) + ' to $' + (hi % 1 ? hi.toFixed(2) : hi) + '<span>/hr</span>'; 3226 note.textContent = r.label + (aSched === 'part' ? ' , part time rate' : ''); 3227 } 3228 search.value = MAP[sel].label; 3229 calc(); 3230 })(); 3231</script>
3231</div><div class="w-embed"><!-- Job-seeker deflection line under the salary estimator --> 3232<style> 3233.vt-jobs-note{max-width:980px;margin:-14px auto 0;padding:0 24px 30px;text-align:center;font-family:'Montserrat',system-ui,sans-serif;font-size:13px;line-height:1.5;color:rgba(0,0,0,.55);} 3234.vt-jobs-note a{color:#B8420F;text-decoration:underline;text-underline-offset:2px;font-weight:600;} 3235.vt-jobs-note a:hover{color:#FF5A1F;} 3236@media (max-width:720px){.vt-jobs-note{margin-top:0;padding:0 10px 24px;}} 3237</style> 3238<p class="vt-jobs-note">Looking for a job with Virtustant? <a href="https://jobs.virtustant.com/">Apply at jobs.virtustant.com</a></p></div></section><section class="section-8"><div class="w-embed w-script"><style>.vp-inc{--black:#000000;--white:#FFFFFF;--orange:#FF5A1F;--gray-soft:#F8F8F8;--text-dim:rgba(0,0,0,0.60);--line:rgba(0,0,0,0.08);--line-strong:rgba(0,0,0,0.14);--orange-15:rgba(255,90,31,0.15);--font-sans:'Montserrat', sans-serif;--font-italic:'RocaTwo', serif;font-family:var(--font-sans);-webkit-font-smoothing:antialiased;background:var(--gray-soft);padding:100px 24px;box-sizing:border-box;}.vp-inc *, .vp-inc *::before, .vp-inc *::after{box-sizing:border-box;margin:0;padding:0;}.vp-inc__inner{max-width:1200px;margin:0 auto;}.vp-inc__head{text-align:center;max-width:760px;margin:0 auto 56px;opacity:0;transform:translateY(20px);transition:opacity 0.8s cubic-bezier(0.2,0.8,0.2,1), transform 0.8s cubic-bezier(0.2,0.8,0.2,1);}.vp-inc__head.is-visible{opacity:1;transform:none;}.vp-inc__eyebrow{display:inline-flex;align-items:center;font-size:11px;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;color:var(--orange);margin-bottom:24px;}.vp-inc__heading{font-family:var(--font-sans);font-weight:600;font-size:clamp(2.5rem, 5.4vw, 4rem);line-height:1.02;letter-spacing:-0.035em;color:var(--black);margin-bottom:20px;}.vp-inc__heading em{font-family:var(--font-italic);font-style:italic;font-weight:400;color:var(--orange);}.vp-inc__lede{font-size:18px;line-height:1.6;color:var(--text-dim);margin:0 auto;}.vp-inc__grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:16px;opacity:0;transform:translateY(20px);transition:opacity 0.8s cubic-bezier(0.2,0.8,0.2,1) 0.15s, transform 0.8s cubic-bezier(0.2,0.8,0.2,1) 0.15s;}.vp-inc__grid.is-visible{opacity:1;transform:none;}@media (max-width:900px){.vp-inc__grid{grid-template-columns:repeat(2, 1fr);}}@media (max-width:540px){.vp-inc__grid{grid-template-columns:1fr;}}.vp-inc__card{background:var(--white);border:1px solid var(--line);border-radius:20px;padding:32px 28px;display:flex;flex-direction:column;gap:14px;position:relative;overflow:hidden;transition:transform 0.4s cubic-bezier(0.2,0.8,0.2,1), border-color 0.4s ease, box-shadow 0.4s ease;}.vp-inc__card:hover{transform:translateY(-4px);border-color:var(--line-strong);box-shadow:0 18px 44px rgba(0,0,0,0.06);}.vp-inc__top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:4px;}.vp-inc__icon{width:48px;height:48px;border-radius:14px;background:var(--orange-15);color:var(--orange);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform 0.4s cubic-bezier(0.3,0,0.15,1), background 0.4s, color 0.4s;}.vp-inc__icon svg{width:22px;height:22px;}.vp-inc__card:hover .vp-inc__icon{transform:rotate(-6deg) scale(1.06);background:var(--orange);color:var(--white);}.vp-inc__stat{font-family:var(--font-italic);font-style:italic;font-size:36px;line-height:1;letter-spacing:-0.03em;color:var(--orange);text-align:right;}.vp-inc__stat small{font-family:var(--font-sans);font-style:normal;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;display:block;color:var(--text-dim);margin-top:2px;}.vp-inc__card h4{font-family:var(--font-sans);font-weight:700;font-size:17px;line-height:1.25;letter-spacing:-0.01em;color:var(--black);}.vp-inc__card p{font-size:14px;line-height:1.55;color:var(--text-dim);flex:1;}.vp-inc__card p strong{color:var(--black);font-weight:600;}.vp-inc__foot{margin-top:12px;padding-top:16px;border-top:1px solid var(--line);font-size:11px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:var(--text-dim);display:inline-flex;align-items:center;gap:8px;transition:color 0.3s ease;}.vp-inc__foot::before{content:'';width:6px;height:6px;background:var(--orange);border-radius:50%;}.vp-inc__card:hover .vp-inc__foot{color:var(--orange);}</style><section class="vp-inc"><div class="vp-inc__inner"><div class="vp-inc__head" id="vpIncHead"><span class="vp-inc__eyebrow">Everything included</span><h2 class="vp-inc__heading">No hidden fees, no surprises. <em>Your hire is fully managed.</em></h2><p class="vp-inc__lede">One all-in hourly rate includes your hireâs pay and the payroll, HR, compliance and ongoing support included in your agreement. No separate recruitment or placement fee.</p></div><div class="vp-inc__grid" id="vpIncGrid"><div class="vp-inc__card"><div class="vp-inc__top"><span class="vp-inc__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></span><div class="vp-inc__stat">0%<small>tax overhead</small></div></div><h4>No payroll taxes</h4><p>We manage all international payroll and tax compliance. No local entities needed, no legal headaches for you.</p><span class="vp-inc__foot">Compliance handled</span></div><div class="vp-inc__card"><div class="vp-inc__top"><span class="vp-inc__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></span><div class="vp-inc__stat">$0<small>extras</small></div></div><h4>No benefits overhead</h4><p>Health insurance, workstation costs, and PTO are fully managed on our end. You pay your flat rate and that's it.</p><span class="vp-inc__foot">All-in pricing</span></div><div class="vp-inc__card"><div class="vp-inc__top"><span class="vp-inc__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="4"/><path d="M4 20c0-4 3.58-7 8-7s8 3 8 7"/></svg></span><div class="vp-inc__stat">1:1<small>support</small></div></div><h4>Dedicated account manager</h4><p>A real person oversees the transition, checks in regularly, and ensures quality performance every single day.</p><span class="vp-inc__foot">Real human, no chatbots</span></div><div class="vp-inc__card"><div class="vp-inc__top"><span class="vp-inc__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="9" y1="15" x2="15" y2="15"/></svg></span><div class="vp-inc__stat">0<small>contracts</small></div></div><h4>No long-term contracts</h4><p>Stay as long as you find value. We believe in earning your partnership every single month. Cancel anytime, no penalties.</p><span class="vp-inc__foot">Month-to-month</span></div><div class="vp-inc__card"><div class="vp-inc__top"><span class="vp-inc__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><line x1="19" y1="8" x2="19" y2="14"/>
3238<line x1="22" y1="11" x2="16" y2="11"/></svg></span><div class="vp-inc__stat">â<small>flexibility</small></div></div><h4>Flexible hiring</h4><p>Scale hours up or down based on your business season. Need part-time? Full-time? Multiple hires? Our model adapts.</p><span class="vp-inc__foot">Scale with demand</span></div><div class="vp-inc__card"><div class="vp-inc__top"><span class="vp-inc__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"/><polyline points="21 3 21 8 16 8"/></svg></span><div class="vp-inc__stat">â<small>replacements</small></div></div><h4>Lifetime replacement guarantee</h4><p>If your hire ever leaves at any point, for any reason, we find you a new one. <strong>Unlimited times. No expiration.</strong></p><span class="vp-inc__foot">No time cap</span></div></div></div></section>
3238<script>(function () { var io = new IntersectionObserver(function(entries) { entries.forEach(function(e) { if (e.isIntersecting) { e.target.classList.add('is-visible'); io.unobserve(e.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' }); ['vpIncHead','vpIncGrid'].forEach(function(id) { var el = document.getElementById(id); if (el) io.observe(el); }); })();</script>
3238</div></section><section class="guarantee-banner"><div class="w-embed w-script"><!-- VIRTUSTANT PRICING EMBED 03 PROMISE --><style>.vp-promise{--black:#000000;--white:#FFFFFF;--orange:#FF5A1F;--on-black:rgba(255,255,255,0.75);--on-black-dim:rgba(255,255,255,0.55);--on-black-line:rgba(255,255,255,0.12);--orange-30:rgba(255,90,31,0.30);--font-sans:'Montserrat',sans-serif;--font-italic:'RocaTwo',serif;font-family:var(--font-sans);-webkit-font-smoothing:antialiased;background:var(--black);color:var(--white);padding:100px 24px;position:relative;overflow:hidden;box-sizing:border-box}.vp-promise *,.vp-promise *::before,.vp-promise *::after{box-sizing:border-box;margin:0;padding:0}.vp-promise::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 60% 50% at 20% 50%,rgba(255,90,31,0.08) 0%,transparent 60%),radial-gradient(ellipse 40% 60% at 80% 30%,rgba(255,90,31,0.05) 0%,transparent 60%);pointer-events:none}@media(max-width:768px){.vp-promise{padding:64px 24px}}.vp-promise__inner{max-width:1200px;margin:0 auto;position:relative;z-index:1}.vp-promise__grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}@media(max-width:900px){.vp-promise__grid{grid-template-columns:1fr;gap:48px}}.vp-promise__left{opacity:0;transform:translateY(20px);transition:opacity 0.8s cubic-bezier(0.2,0.8,0.2,1),transform 0.8s cubic-bezier(0.2,0.8,0.2,1)}.vp-promise__left.is-visible{opacity:1;transform:none}.vp-promise__eyebrow{display:inline-flex;align-items:center;font-size:11px;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;color:var(--orange);margin-bottom:24px}.vp-promise__left h2{font-family:var(--font-sans);font-weight:600;font-size:clamp(2rem,4.4vw,3.4rem);line-height:1.05;letter-spacing:-0.03em;color:var(--white);margin-bottom:22px}.vp-promise__left h2 em{font-family:var(--font-italic);font-style:italic;font-weight:400;color:var(--orange)}.vp-promise__pull{font-family:var(--font-italic);font-style:italic;font-size:22px;line-height:1.3;color:var(--orange);padding-left:18px;border-left:3px solid var(--orange);margin-bottom:20px}.vp-promise__left p{font-size:16.5px;line-height:1.65;color:var(--on-black)}.vp-promise__tl{position:relative;padding-left:52px;opacity:0;transform:translateY(20px);transition:opacity 0.8s cubic-bezier(0.2,0.8,0.2,1) 0.15s,transform 0.8s cubic-bezier(0.2,0.8,0.2,1) 0.15s}.vp-promise__tl.is-visible{opacity:1;transform:none}.vp-promise__tl::before{content:'';position:absolute;left:19px;top:12px;bottom:28px;width:2px;background-image:linear-gradient(to bottom,var(--orange) 50%,transparent 50%);background-size:2px 8px;background-repeat:repeat-y}.vp-tl-row{position:relative;padding:16px 24px 16px 0;margin-bottom:12px;border-radius:14px;transition:background 0.3s ease}.vp-tl-row:last-child{margin-bottom:0}.vp-tl-row::before{content:'';position:absolute;left:-52px;top:24px;width:40px;height:40px;border-radius:50%;background:var(--black);border:1.5px solid var(--orange);z-index:1}.vp-tl-row::after{content:'\2713';position:absolute;left:-52px;top:24px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;color:var(--orange);z-index:2}.vp-tl-row.active::before{background:var(--orange);border-color:var(--orange)}.vp-tl-row.active::after{color:var(--white)}.vp-tl-row:hover{background:rgba(255,255,255,0.04)}.vp-tl-when{font-size:11px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:var(--orange);margin-bottom:4px}.vp-tl-what{font-family:var(--font-sans);font-weight:600;font-size:17px;line-height:1.3;letter-spacing:-0.01em;color:var(--white);margin-bottom:4px}.vp-tl-what em{font-family:var(--font-italic);font-style:italic;font-weight:400;color:var(--orange)}.vp-tl-desc{font-size:13.5px;line-height:1.5;color:var(--on-black)}.vp-tl-arrow{position:relative;display:flex;align-items:center;gap:10px;margin-top:16px;padding-top:8px;font-family:var(--font-sans);font-weight:600;font-size:17px;letter-spacing:-0.01em;color:var(--white);min-height:40px}.vp-tl-arrow em{font-family:var(--font-italic);font-style:italic;font-weight:400;color:var(--orange)}.vp-tl-arrow::before{content:'\2193';position:absolute;
3238left:-52px;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;background:var(--orange);color:var(--white);display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:700;font-size:16px;z-index:2}</style><section class="vp-promise"><div class="vp-promise__inner"><div class="vp-promise__grid"><div class="vp-promise__left" id="vpPromiseLeft"><span class="vp-promise__eyebrow">Covered for the life of the hire</span><h2>You're <em>covered</em> as long as you have us.</h2><div class="vp-promise__pull">Most staffing agencies offer 90-day replacement. As if talent only needs to fit for three months.</div><p>We don't play that game. The day your hire leaves, whether that's month 2 or year 3, we re-open the search at zero cost. Same full vetting process, same shortlist quality, same hiring bar. Until you're staffed again.</p></div><div class="vp-promise__tl" id="vpPromiseTl"><div class="vp-tl-row active"><div class="vp-tl-when">Day 1</div><div class="vp-tl-what">Your hire starts.</div><div class="vp-tl-desc">Onboarded, integrated, and working in your timezone.</div></div><div class="vp-tl-row active"><div class="vp-tl-when">Month 6</div><div class="vp-tl-what">Still <em>covered.</em></div><div class="vp-tl-desc">If they leave for any reason, we replace at zero cost.</div></div><div class="vp-tl-row active"><div class="vp-tl-when">Year 3</div><div class="vp-tl-what">Still <em>covered.</em></div><div class="vp-tl-desc">Same guarantee, same process, no questions asked.</div></div><div class="vp-tl-arrow">and beyond. <em>Forever.</em></div></div></div></div></section>
3238<script>(function(){var io=new IntersectionObserver(function(entries){entries.forEach(function(e){if(e.isIntersecting){e.target.classList.add('is-visible');io.unobserve(e.target);}});},{threshold:0.12,rootMargin:'0px 0px -40px 0px'});['vpPromiseLeft','vpPromiseTl'].forEach(function(id){var el=document.getElementById(id);if(el)io.observe(el);});})();</script>
3238</div></section><section class="vt-split-row"><div class="code-embed-35 vt-split-col w-embed"><style> 3239 .vp-hero { 3240 --black: #000000; 3241 --ink: #16161a; 3242 --orange: #ff5a1f; 3243 --dim: rgba(0,0,0,0.60); 3244 --mut: rgba(0,0,0,0.42); 3245 --line: rgba(0,0,0,0.10); 3246 --soft: #f7f7f8; 3247 --font-sans: 'Montserrat', system-ui, sans-serif; 3248 --font-italic: 'RocaTwo', Georgia, serif; 3249 3250 font-family: var(--font-sans); 3251 -webkit-font-smoothing: antialiased; 3252 box-sizing: border-box; 3253 } 3254 .vp-hero *, .vp-hero *::before, .vp-hero *::after { box-sizing: border-box; margin: 0; padding: 0; } 3255 3256 /* Layout (widths, gap, centering) is handled by the Webflow section 3257 .vt-split-row / .vt-split-col â this embed only styles the copy. */ 3258 3259 .vp-hero__eyebrow { 3260 display: inline-flex; 3261 align-items: center; 3262 font-size: 11px; 3263 font-weight: 600; 3264 letter-spacing: 0.16em; 3265 text-transform: uppercase; 3266 color: var(--orange); 3267 margin-bottom: 20px; 3268 } 3269 .vp-hero__title { 3270 font-family: var(--font-sans); 3271 font-weight: 600; 3272 font-size: clamp(2.2rem, 3.4vw, 3.2rem); 3273 line-height: 1.08; 3274 letter-spacing: -0.03em; 3275 color: var(--black); 3276 margin-bottom: 20px; 3277 } 3278 .vp-hero__title em { 3279 font-family: var(--font-italic); 3280 font-style: italic; 3281 font-weight: 400; 3282 color: var(--orange); 3283 } 3284 .vp-hero__lede { 3285 font-size: 17px; 3286 line-height: 1.6; 3287 color: var(--dim); 3288 max-width: 520px; 3289 margin-bottom: 28px; 3290 } 3291 .vp-hero__points { 3292 display: grid; 3293 grid-template-columns: 1fr 1fr; 3294 gap: 12px 24px; 3295 max-width: 480px; 3296 } 3297 .vp-hero__point { 3298 display: flex; 3299 align-items: center; 3300 gap: 8px; 3301 font-size: 14px; 3302 font-weight: 600; 3303 color: var(--ink); 3304 } 3305 .vp-hero__point::before { 3306 content: "*"; 3307 color: var(--orange); 3308 font-weight: 700; 3309 font-size: 16px; 3310 line-height: 1; 3311 } 3312 3313 @media (max-width: 480px) { 3314 .vp-hero__points { grid-template-columns: 1fr; } 3315 } 3316</style> 3317 3318<section class="vp-hero"> 3319 <div class="vp-hero__inner"> 3320 3321 <!-- LEFT --> 3322 <div class="vp-hero__copy"> 3323 <span class="vp-hero__eyebrow">Empower Your Growth</span> 3324 <h2 class="vp-hero__title">Hire Talent and <em>Save up to 70%</em> vs. U.S. Salaries</h2> 3325 <p class="vp-hero__lede">Book a 30-minute scoping call. No commitment, no setup fees, pay only if you hire. You'll leave with a realistic all-in rate range, a rough timeline, and 2–3 example profiles.</p> 3326 <div class="vp-hero__points"> 3327 <div class="vp-hero__point">Free consultation</div> 3328 <div class="vp-hero__point">No setup fees</div> 3329 <div class="vp-hero__point">Pay only if you hire</div> 3330 <div class="vp-hero__point">All-in rate from $7/hr</div> 3331 </div> 3332 </div> 3333 3334 </div> 3335</section></div><div class="form-block form-pricing w-form"><form id="wf-form-Pricing---Form" name="wf-form-Pricing---Form" data-name="Pricing - Form" method="get" class="form form-title pricing mobile" data-wf-page-id="66f0f6032f9297b2bd2036ba" data-wf-element-id="edfafad5-365a-f9ca-6449-b742812da3cd" data-turnstile-sitekey="0x4AAAAAAAQTptj2So4dx43e"><h2 class="number-section services other-services why-virtu contact-us price">Talk with our sales team</h2><div class="text-block-26">Avg. response time: 4 hours</div><div class="w-layout-hflex flex-block-33"><div class="form-first-name-block"><label for="First-Name-4" class="form_subtext pricing">First Name <span class="text-span-30">*</span></label><input class="text-field pricing-form w-input" maxlength="256" name="First-Name-4" data-name="First Name 4" placeholder="First Name" type="text" id="First-Name-4" required=""/></div><div class="form-last-name-block"><label for="Last-Name-4" class="form_subtext pricing">Last Name <span class="text-span-31">*</span></label><input class="text-field pricing-form w-input" maxlength="256" name="Last-Name-4" data-name="Last Name 4" placeholder="Last Name" type="text" id="Last-Name-4" required=""/></div></div><div class="w-layout-hflex flex-block-34"><div class="form-email-block"><label for="Email-5" class="form_subtext pricing">Business Email <span class="text-span-29">*</span></label><input class="text-field pricing-form w-input" maxlength="256" name="Email-5" data-name="Email 5" placeholder="[email protected]" type="email" id="Email-5" required=""/></div><div class="form-phone_number-block"><label for="Phone-number-2" class="form_subtext pricing">Phone Number <span class="text-span-28">*</span></label><input class="text-field pricing-form w-input" maxlength="256" name="Phone-number-2" data-name="Phone Number 2" placeholder="(555) 555-1234" type="tel" id="Phone-number-2" required=""/></div></div><label for="Website" class="form_subtext pricing">
3335Company Website <span class="text-span-27">*</span></label><input class="text-field pricing-form w-input" maxlength="256" name="Website" data-name="Website" placeholder="www.your-website.com" type="url" id="Website" required=""/><label for="How" class="form_subtext pricing">How did you hear about us? <span class="text-span-26">*</span></label><input class="text-field pricing-form w-input" maxlength="256" name="How" data-name="How" placeholder="Tell us how you found us!" type="text" id="How" required=""/><div class="recaptcha-wrapper"><div data-sitekey="6LfZs5QrAAAAALsJzXwyPNngUAr6t4pGEmSijJw4" class="w-form-formrecaptcha recaptcha g-recaptcha g-recaptcha-error g-recaptcha-disabled"></div></div><input type="submit" data-wait="Please wait..." class="contact_us-form-btn w-button" value="Book your free consultation"/></form><div class="success-message-2 w-form-done"><div class="code-embed-6 w-embed"><svg width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 3336<path d="M7.5 12L10.5 15L16.5 9M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke="#4B9040" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 3337</svg></div><div class="contact_us-thank_you-title">Thank you!</div><div class="contact_us-thank_you-text">Your message has been received, and our team will be in touch with you shortly</div></div><div class="w-form-fail"><div>Oops! Something went wrong while submitting the form.</div></div></div></section><section class="section-pricing-hero"></section><section class="section_why-virtustant-pricing"><section class="section-padding pricing-why-virtu"><div class="w-layout-blockcontainer blog-post-text w-container"><div data-w-id="e8f3ed57-6a6b-fcc9-0d76-04aaf10aaccf" style="-webkit-transform:translate3d(0, 20px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0, 20px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0, 20px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0, 20px, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);opacity:0" class="why-virtustant-container"><div class="f-margin-bottom-128 why-virtustant"><div class="f-title-wrapper-center"><div class="heading-subheading-2 why-virtu">Why virtustant</div><h2 class="number-section services other-services why-virtu">We will <span class="roca-two-streamline">help</span> your company...</h2></div></div><div class="w-layout-grid f-grid-four-columns"><div><div class="f-feature-icon-wrapper pricing-icons"><div class="w-embed"><svg width="81" height="39" viewBox="0 0 81 57" fill="none" xmlns="http://www.w3.org/2000/svg"> 3338<rect x="0.00195312" y="25.9151" width="56.8686" height="31.0192" rx="4.22856" fill="#033B54"/> 3339<path d="M63.8041 18.3052C65.2841 18.4212 66.3895 19.7157 66.2721 21.1956L64.4686 43.9409C64.2837 46.2736 61.4119 47.2709 59.821 45.5549L36.94 20.876C35.2771 19.0825 36.6812 16.1807 39.1196 16.3717L63.8041 18.3052Z" fill="#6EEFE0"/> 3340<circle cx="28.4364" cy="40.563" r="7.75481" fill="#F7F9FD"/> 3341<mask id="mask0_1271_3336" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="25" width="57" height="32"> 3342<rect x="0.00195312" y="25.9151" width="56.8686" height="31.0192" rx="4.22856" fill="#033B54"/> 3343</mask> 3344<g mask="url(#mask0_1271_3336)"> 3345<path d="M63.8041 18.3052C65.2841 18.4212 66.3895 19.7157 66.2721 21.1956L64.4686 43.9409C64.2837 46.2736 61.4119 47.2709 59.821 45.5549L36.94 20.876C35.2771 19.0825 36.6812 16.1807 39.1196 16.3717L63.8041 18.3052Z" fill="#F67331"/> 3346</g> 3347<circle cx="28.4364" cy="40.563" r="7.75481" fill="#F7F9FD"/> 3348</svg></div></div><div class="f-margin-bottom-08"><h3 class="why-virtustant-point-title pricing-option">Save up to 70%</h3></div><p class="why-virtustant-point-text">Unlock un-matched savings by hiring highly skilled remote talent compared to the US market.</p></div><div><div class="f-feature-icon-wrapper pricing-icon"><div class="w-embed"><svg width="45" height="40" viewBox="0 0 45 63" fill="none" xmlns="http://www.w3.org/2000/svg"> 3349<circle cx="19.9676" cy="15.0438" r="15.0438" fill="#6EEFE0"/>
3350<path d="M37.2766 63H13.9927C12.8674 63 11.8361 62.3721 11.3196 61.3723L0.671063 40.7623C0.558861 40.5451 0.479607 40.3097 0.453519 40.0666C-0.0273777 35.5865 3.7733 34.1605 7.02046 35.7887C7.18859 35.873 7.34051 35.9865 7.47726 36.1157L12.7724 41.1166C13.2521 41.5697 14.041 41.2296 14.041 40.5698V16.3717C14.041 16.1179 14.0839 15.8597 14.1755 15.6229C16.8761 8.63836 23.6676 11.1188 24.5426 15.8173C24.5636 15.9302 24.5717 16.0459 24.5717 16.1608V32.5234C24.5717 33.4409 25.1272 34.2671 25.9768 34.6132L43.0605 41.5732C44.1038 41.9983 44.6738 43.1278 44.3959 44.2196L40.1924 60.7334C39.853 62.0668 38.6524 63 37.2766 63Z" fill="#033B54"/> 3351<mask id="mask0_1272_3346" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="4" y="0" width="32" height="31"> 3352<circle cx="19.9695" cy="15.0438" r="15.0438" fill="#6EEFE0"/> 3353</mask> 3354<g mask="url(#mask0_1272_3346)"> 3355<path d="M37.2786 63H13.9946C12.8693 63 11.8381 62.3721 11.3215 61.3723L0.673016 40.7623C0.560814 40.5451 0.48156 40.3097 0.455472 40.0666C-0.0254246 35.5865 3.77526 34.1605 7.02241 35.7887C7.19055 35.873 7.34247 35.9865 7.47921 36.1157L12.7743 41.1166C13.254 41.5697 14.043 41.2296 14.043 40.5698V16.3717C14.043 16.1179 14.0859 15.8597 14.1774 15.6229C16.878 8.63836 23.6696 11.1188 24.5446 15.8173C24.5656 15.9302 24.5736 16.0459 24.5736 16.1608V32.5234C24.5736 33.4409 25.1291 34.2671 25.9788 34.6132L43.0624 41.5732C44.1058 41.9983 44.6758 43.1278 44.3978 44.2196L40.1943 60.7334C39.8549 62.0668 38.6544 63 37.2786 63Z" fill="#F67331"/> 3356</g> 3357</svg></div></div><div class="f-margin-bottom-08"><h3 class="why-virtustant-point-title pricing-option">Hire in days, not weeks</h3></div><p class="why-virtustant-point-text">Shortlist in 48 hours. Start in 72 hours. From your first call, in calendar hours, including weekends.</p></div><div><div class="f-feature-icon-wrapper pricing-icon-2"><div class="w-embed"><svg width="52" height="34" viewBox="0 0 52 52" fill="none" xmlns="http://www.w3.org/2000/svg"> 3358<path d="M46.2222 23.1111C46.2222 16.9817 43.7873 11.1033 39.4531 6.76909C35.119 2.43491 29.2406 4.6276e-07 23.1111 0C16.9817 -4.6276e-07 11.1033 2.43491 6.76909 6.76909C2.43492 11.1033 9.25521e-07 16.9817 0 23.1111L23.1111 23.1111H46.2222Z" fill="#033B54"/> 3359<path d="M0 23.1111C-2.65328e-07 26.1461 0.597786 29.1514 1.75923 31.9553C2.92067 34.7593 4.62302 37.3071 6.76909 39.4531C8.91515 41.5992 11.4629 43.3016 14.2669 44.463C17.0708 45.6244 20.0761 46.2222 23.1111 46.2222L23.1111 23.1111L0 23.1111Z" fill="#6EEFE0"/> 3360<path d="M28.8885 52C31.9234 52 34.9287 51.4022 37.7327 50.2408C40.5367 49.0793 43.0844 47.377 45.2305 45.2309C47.3765 43.0848 49.0789 40.5371 50.2403 37.7331C51.4018 34.9292 51.9996 31.9239 51.9996 28.8889L28.8885 28.8889L28.8885 52Z" fill="#F67331"/> 3361</svg></div></div><div class="f-margin-bottom-08"><h3 class="why-virtustant-point-title pricing-option">Delegate and grow</h3></div><p class="why-virtustant-point-text">Tap into untapped talent pools, leveraging the power of delegation to drive business growth.</p></div><div><div class="f-feature-icon-wrapper"><div class="w-embed"><svg width="47" height="39" viewBox="0 0 47 70" fill="none" xmlns="http://www.w3.org/2000/svg"> 3362<path d="M23.1115 46.2222C29.241 46.2222 35.1194 43.7873 39.4536 39.4531C43.7877 35.119 46.2227 29.2406 46.2227 23.1111C46.2227 16.9817 43.7877 11.1033 39.4536 6.76909C35.1194 2.43491 29.241 1.83229e-07 23.1115 -1.01022e-06L23.1115 23.1111L23.1115 46.2222Z" fill="#033B54"/> 3363<path d="M0 46.1111C-2.65328e-07 49.1461 0.597786 52.1514 1.75923 54.9553C2.92067 57.7593 4.62302 60.3071 6.76909 62.4531C8.91515 64.5992 11.4629 66.3016 14.2669 67.463C17.0708 68.6244 20.0761 69.2222 23.1111 69.2222L23.1111 46.1111L0 46.1111Z" fill="#6EEFE0"/> 3364<rect y="23" width="23" height="23" fill="#F67331"/> 3365</svg></div></div><div class="f-margin-bottom-08"><h3 class="why-virtustant-point-title pricing-option">Optimize Payments</h3></div><p class="why-virtustant-point-text">Streamline payroll management, handling everything from tax compliance to salary disbursement.</p></div></div></div></div></section></section><section class="np-section np-alt"><div class="np-container"><h2>Published rates: starting all-in cost by role</h2><p>Virtustant rates start at $7/hr all-in. This is the total hourly price you pay, with no separate recruitment or placement fee. Your quote depends on the role, experience and agreed schedule. The table below shows starting prices by role. Historical hiring data and its methodology are in our 2026 Nearshore Rate Report.</p><p>The rate is one half of the decision. The other half is who is the employer on paper, who runs payroll and what the replacement guarantee actually covers, which is where an all-in rate and a recruiter's fee stop being comparable. That side by side, with the vetting funnel behind every placement, is on how to <a href="/services">hire through a remote staffing agency</a>.</p><div class="vas-table-wrap"><div class="w-embed"><style> 3366.vpr-box{--o:#FF5A1F;font-family:'Montserrat',system-ui,sans-serif;background:#f7f7f8;border:1px solid rgba(0,0,0,.10);border-left:3px solid var(--o);border-radius:12px;padding:20px 22px;margin:26px 0 0} 3367.vpr-box h3{margin:0 0 10px;font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--o)} 3368.vpr-box p{margin:0 0 10px;font-size:14.5px;line-height:1.65;color:rgba(0,0,0,.66)} 3369.vpr-box p:last-child{margin-bottom:0} 3370.vpr-flag{display:inline-block;font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:rgba(0,0,0,.45);background:rgba(0,0,0,.05);border-radius:4px;padding:2px 6px;margin-left:6px;white-space:nowrap} 3371.vpr-total td{font-weight:700;background:rgba(255,90,31,.05)} 3372.vpr-med{font-family:'Montserrat',system-ui,sans-serif;margin:34px 0 0} 3373.vpr-med h3{margin:0 0 8px;font-size:1.25rem;font-weight:700;letter-spacing:-.01em;color:#16161a} 3374.vpr-med p{margin:10px 0 0;font-size:14.5px;line-height:1.65;color:rgba(0,0,0,.66)} 3375.vpr-med .vpr-meta{font-size:13px;color:rgba(0,0,0,.55)} 3376</style><table class="vas-table"><thead><tr><th class="vas-th">Role</th><th class="vas-th">Starting all-in rate</th></tr></thead><tbody><tr><td class="vas-td"><a class="arg-link" href="/roles/appointment-setter">Appointment setter</a></td><td class="vas-td"><strong>From $8/hr all-in</strong></td></tr><tr><td class="vas-td"><a class="arg-link" href="/roles/social-media-manager">Social media manager</a></td><td class="vas-td"><strong>From $8/hr all-in</strong></td></tr><tr><td class="vas-td"><a class="arg-link" href="/roles/virtual-assistant">Virtual assistant</a></td><td class="vas-td"><strong>From $7/hr all-in</strong></td></tr><tr><td class="vas-td"><a class="arg-link" href="/roles/sales-development-representative">Sales development rep (SDR/BDR)</a></td><td class="vas-td"><strong>From $8/hr all-in</strong></td></tr><tr><td class="vas-td"><a class="arg-link" href="/roles/customer-service-specialist">Customer service representative</a></td><td class="vas-td"><strong>From $7/hr all-in</strong></td></tr><tr><td class="vas-td"><a class="arg-link" href="/roles/executive-assistant">Executive assistant</a></td><td class="vas-td"><strong>From $8.50/hr all-in</strong></td></tr><tr><td class="vas-td">Legal assistant / paralegal</td><td class="vas-td"><strong>Role-specific quote</strong></td></tr><tr><td class="vas-td"><a class="arg-link" href="/roles/bookkeeper">
3376Bookkeeper</a></td><td class="vas-td"><strong>From $8.50/hr all-in</strong></td></tr><tr><td class="vas-td">Recruiter</td><td class="vas-td"><strong>Role-specific quote</strong></td></tr><tr><td class="vas-td">Cold caller</td><td class="vas-td"><strong>Role-specific quote</strong></td></tr><tr><td class="vas-td"><a class="arg-link" href="/roles/designer">Graphic designer</a></td><td class="vas-td"><strong>From $8/hr all-in</strong></td></tr><tr><td class="vas-td">Dispatcher</td><td class="vas-td"><strong>Role-specific quote</strong></td></tr><tr><td class="vas-td">Administrative assistant</td><td class="vas-td"><strong>Role-specific quote</strong></td></tr></tbody></table><div class="vpr-box"><h3>How to read these prices</h3><p>These are current starting prices. Your quote depends on the role, experience and agreed schedule. The all-in rate is the total hourly price you pay, with no separate recruitment or placement fee.</p><p>For the independently reconciled JanuaryâJune 2026 hiring cohort and rate methodology, read our <a class="arg-link" href="/blog/2026-nearshore-rate-report">2026 Nearshore Rate Report</a>. Research medians describe that cohort and are separate from current starting offers.</p><p>How Virtustant makes money: if you pay your agent $10/hr, we give them $9 and keep the dollar in the middle.</p><p>Our <a class="arg-link" href="/blog/virtual-assistant-rates">virtual assistant pricing guide</a> explains pricing models and budget planning. Confirm your scope and hours during the discovery call.</p></div><div class="vpr-med" id="median-rates"><h3>Median client-side rates by role (H1 2026)</h3><p>The table above shows what a new hire starts from today. This table shows the evidence behind it: in Virtustant's H1 2026 placement data (441 starts, JanuaryâJune 2026), the median client-side rate for a virtual assistant was $10.10/hr (n=24). Role medians in the cohort range from $9.00/hr (dispat
3376cher) to $12.41/hr (SDR/BDR). There is no single median across all roles.</p><table class="vas-table"><thead><tr><th class="vas-th">Role</th><th class="vas-th">Median client-side rate</th><th class="vas-th">n (placement starts)</th></tr></thead><tbody><tr><td class="vas-td">SDR / BDR</td><td class="vas-td"><strong>$12.41/hr</strong></td><td class="vas-td">32</td></tr><tr><td class="vas-td">Social media manager</td><td class="vas-td"><strong>$12.00/hr</strong></td><td class="vas-td">31</td></tr><tr><td class="vas-td">Executive assistant</td><td class="vas-td"><strong>$12.00/hr</strong></td><td class="vas-td">24</td></tr><tr><td class="vas-td">Virtual assistant</td><td class="vas-td"><strong>$10.10/hr</strong></td><td class="vas-td">24</td></tr><tr><td class="vas-td">Appointment setter</td><td class="vas-td"><strong>$10.73/hr</strong></td><td class="vas-td">22</td></tr><tr><td class="vas-td">Administrative assistant</td><td class="vas-td"><strong>$9.50/hr</strong></td><td class="vas-td">17</td></tr><tr><td class="vas-td">Customer service</td><td class="vas-td"><strong>$10.83/hr</strong></td><td class="vas-td">12</td></tr><tr><td class="vas-td">Dispatcher</td><td class="vas-td"><strong>$9.00/hr</strong></td><td class="vas-td">10</td></tr><tr><td class="vas-td">Customer service representative</td><td class="vas-td"><strong>$9.65/hr</strong></td><td class="vas-td">9<span class="vpr-flag">Small sample</span></td></tr><tr><td class="vas-td">Bookkeeper</td><td class="vas-td"><strong>$12.85/hr</strong></td><td class="vas-td">7<span class="vpr-flag">Small sample</span></td></tr></tbody></table><p><strong>Method.</strong> Cohort: 441 placement starts from January 1 to June 30, 2026 (397 people), from Virtustant's placement records as read on September 30, 2026. Each figure is a median client-side rate benchmark: expected weekly client revenue divided by expected weekly hours (for SDR/BDR, the explicit client rate). These are benchmarks from placement records, not verified payments. Roles with fewer than 10 starts are marked small sample. Customer service and customer service representative are reported as the separate role titles recorded in placement records. Roles not listed (legal assistant, recruiter, cold caller, graphic designer, developers and others) have no H1 2026 median and are quoted from the starting prices above. Full methodology: <a class="arg-link" href="/blog/2026-nearshore-rate-report">2026 Nearshore Rate Report</a>.</p><p class="vpr-meta">Reviewed by <a class="arg-link" href="/about-us#kevin-wright">Kevin Wright, Co-Founder</a> · Updated <time datetime="2026-10-01">October 1, 2026</time></p></div></div></div><p class="vas-note">Sample size (n) is shown for every role in the median table. Roles with fewer than 10 placement starts are flagged as small sample and reported as they are, not extrapolated. Medians come from Virtustant's placement records for JanuaryâJune 2026 starts, read on 30 September 2026.</p><p>Sources and detail: <a href="/blog/2026-nearshore-rate-report" class="arg-link">2026 Nearshore Rate Report</a> · <a href="/blog/llm-info" class="arg-link">official Virtustant facts</a> · <a href="/virtual-assistant-services" class="arg-link">virtual assistant services</a><span> · </span><a href="/zero-fee-model" class="arg-link">the Zero-Fee Model</a>.</p></div></section><div class="w-embed w-script"><link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&display=swap" rel="stylesheet"> 3377<style> 3378.vfaq-sec{background:#fff;padding:80px 0;font-family:'Montserrat',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif} 3379.vfaq-inner{max-width:1140px;margin:0 auto;padding:0 24px} 3380.vfaq2{--o:#FF5A1F;--ink:#16161a;--dim:rgba(0,0,0,.62);--line:rgba(0,0,0,.10);display:grid;grid-template-columns:360px 1fr;gap:56px;align-items:start} 3381.vfaq2 .fq-eyebrow{display:inline-flex;align-items:center;gap:9px;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--o);margin:0 0 16px} 3382.vfaq2 .fq-eyebrow::before{content:"";width:24px;height:2px;background:var(--o);display:inline-block} 3383.vfaq2 .fq-title{font-size:clamp(1.7rem,2.6vw,2.4rem);font-weight:700;letter-spacing:-.02em;color:var(--ink);margin:0 0 14px;line-height:1.1} 3384.vfaq2 .fq-title em{font-family:'RocaTwo',Georgia,serif;font-style:italic;font-weight:400;color:var(--o)} 3385.vfaq2 .fq-help{font-size:15px;color:var(--dim);margin:0} 3386.vfaq2 .fq-help a{color:var(--o);font-weight:600;text-decoration:none} 3387.vfaq2 .fq-list{border-top:1px solid var(--line)} 3388.vfaq2 .fq-item{border-bottom:1px solid var(--line)} 3389.vfaq2 .fq-q{display:flex;align-items:center;justify-content:space-between;gap:18px;width:100%;background:none;border:0;cursor:pointer;text-align:left;padding:19px 2px;font-family:inherit;font-size:clamp(1rem,1.25vw,1.1rem);font-weight:600;color:var(--ink);line-height:1.35} 3390.vfaq2 .fq-ic{flex:none;width:15px;height:15px;color:var(--o);transition:transform .25s ease} 3391.vfaq2 .fq-item.open .fq-ic{transform:rotate(180deg)} 3392.vfaq2 .fq-a{max-height:0;overflow:hidden;transition:max-height .3s ease} 3393.vfaq2 .fq-a p{margin:0 2px 20px;color:var(--dim);font-size:15px;line-height:1.65} 3394@media(max-width:860px){.vfaq2{grid-template-columns:1fr;gap:26px}} 3395</style> 3396<section class="vfaq-sec"><div class="vfaq-inner"><div class="vfaq2"> 3397<div class="fq-head"><p class="fq-eyebrow">Pricing FAQ</p><h2 class="fq-title">Pricing, <em>answered</em></h2><p class="fq-help">Want a rate for your role? <a href="https://calendly.com/d/cm4v-bxb-7hy/discovery-call-virtustant">Book a free consultation</a>.</p></div> 3398<div class="fq-list"> 3399<div class="fq-item"><button class="fq-q" aria-expanded="false">How much does it cost to hire a virtual assistant from Latin America through Virtustant?<svg class="fq-ic" viewB
3399ox="0 0 24 24" fill="none"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div class="fq-a"><p>Virtual assistants start at $7/hr all-in. This is the total hourly price you pay, with no separate recruitment or placement fee. At the starting price, 160 billed hours equals $1,120. In Virtustant's H1 2026 placement data (441 starts, JanuaryâJune 2026), the median client-side rate for a virtual assistant was $10.10/hr (n=24), or $1,616 for 160 hours. Your quote depends on the role, experience and agreed schedule.</p></div></div> 3400<div class="fq-item"><button class="fq-q" aria-expanded="false">How much does Virtustant charge for recruitment services?<svg class="fq-ic" viewBox="0 0 24 24" fill="none"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div class="fq-a"><p>There is no recruitment or placement fee. Virtustant rates start at $7/hr all-in. This is the total hourly price you pay, with no separate recruitment or placement fee. Your quote depends on the role, experience and agreed schedule.</p></div></div> 3401<div class="fq-item"><button class="fq-q" aria-expanded="false">How much does a virtual executive assistant cost through Virtustant?<svg class="fq-ic" viewBox="0 0 24 24" fill="none"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div class="fq-a"><p>Executive assistants start at $8.50/hr all-in. At that starting price, 160 billed hours equals $1,360. In Virtustant's H1 2026 placement data, the median client-side rate for an executive assistant was $12.00/hr (n=24). Your quote depends on the role, experience and agreed schedule, with no separate recruitment or placement fee.</p></div></div> 3402<div class="fq-item"><button class="fq-q" aria-expanded="false">Is a part-time hire more expensive per hour?<svg class="fq-ic" viewBox="0 0 24 24" fill="none"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div class="fq-a"><p>Part-time and full-time hiring use the same all-in hourly pricing model. The quoted rate depends on the role, experience and agreed schedule. We confirm the rate and hours during your discovery call.</p></div></div> 3403<div class="fq-item"><button class="fq-q" aria-expanded="false">How much do staffing agencies charge, and how is Virtustant different?<svg class="fq-ic" viewBox="0 0 24 24" fill="none"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div class="fq-a"><p>Agency pricing varies: some charge a placement fee or a percentage of annual compensation. Virtustant charges one quoted all-in hourly rate, with no separate recruitment or placement fee. Compare the same role, schedule, service scope and contract terms.</p></div></div> 3404<div class="fq-item"><button class="fq-q" aria-expanded="false">How long is Virtustant's hiring process?<svg class="fq-ic" viewBox="0 0 24 24" fill="none"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div class="fq-a"><p>You get a shortlist of 3 to 5 vetted candidates within 48 hours of your first call, and your hire can start in 72 hours.</p></div></div> 3405<div class="fq-item"><button class="fq-q" aria-expanded="false">Do you provide ongoing support after the hiring process?<svg class="fq-ic" viewBox="0 0 24 24" fill="none"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div class="fq-a"><p>Yes. Each hire gets a dedicated account manager who oversees the transition, runs regular check-ins, and ensures quality. We also handle all payroll, HR and compliance for the lifetime of the engagement.</p></div></div> 3406<div class="fq-item"><button class="fq-q" aria-expanded="false">What's Virtustant's cancellation policy?<svg class="fq-ic" viewBox="0 0 24 24" fill="none"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div class="fq-a"><p>Engagements are month-to-month. Cancellation and changes to your engagement follow the terms in your agreement. We confirm the schedule and engagement terms with you during the discovery call.</p></div></div> 3407<div class="fq-item"><button class="fq-q" aria-expanded="false">
3407What kind of services do you offer?<svg class="fq-ic" viewBox="0 0 24 24" fill="none"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div class="fq-a"><p>Remote staffing across roles such as virtual assistants, executive assistants, sales reps, marketing specialists, customer service, bookkeepers, designers, developers and project managers, all pre-vetted, bilingual and working in your time zone.</p></div></div> 3408<div class="fq-item"><button class="fq-q" aria-expanded="false">How can I book a free consultation with Virtustant?<svg class="fq-ic" viewBox="0 0 24 24" fill="none"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></button><div class="fq-a"><p>Use the form on the page or click the Book a call button anywhere on the site. The call is 30 minutes, free, with zero obligation.</p></div></div> 3409</div></div></div></section>
3410<script>(function(){document.querySelectorAll('.vfaq-sec .vfaq2 .fq-q').forEach(function(b){b.addEventListener('click',function(){var i=b.parentElement,a=i.querySelector('.fq-a');var o=i.classList.toggle('open');b.setAttribute('aria-expanded',o?'true':'false');a.style.maxHeight=o?(a.scrollHeight+'px'):'0px';});});})();</script>
3410</div><div><div class="w-embed"><style> 3411 .vt-footer { background: #000000; color: #ffffff; padding: 72px 0 32px; font-family: 'Montserrat', sans-serif; } 3412 .vt-footer-container { width: 90%; margin: 0 auto; } 3413 .vt-footer-top { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr 1fr 1fr 1fr; gap: 40px; padding-bottom: 40px; border-bottom: 1px solid rgba(255, 255, 255, 0.12); margin-bottom: 24px; } 3414 .vt-footer-logo { display: inline-block; margin-bottom: 14px; } 3415 .vt-footer-logo img { height: 30px; width: auto; display: block; } 3416 .vt-footer-tagline { font-size: 14px; line-height: 1.6; color: rgba(255, 255, 255, 0.55); max-width: 280px; } 3417 .vt-footer-col h6 { font-size: 11px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(255, 255, 255, 0.55); margin-bottom: 14px; margin-top: 0; } 3418 .vt-footer-col h6 a { color: inherit; text-decoration: none; transition: color 0.2s; } 3419 .vt-footer-col h6 a:hover { color: #ff5a1f; } 3420 .vt-footer-col ul { list-style: none; padding: 0; margin: 0; } 3421 .vt-footer-col ul li { margin-bottom: 10px; } 3422 .vt-footer-col ul a, 3423 .vt-footer-col ul span { font-size: 14px; color: rgba(255, 255, 255, 0.75); text-decoration: none; transition: color 0.2s; } 3424 .vt-footer-col ul a:hover { color: #ff5a1f; } 3425 .vt-footer-roles-all { color: #ff5a1f !important; font-weight: 600; } 3426 .vt-footer-bottom { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 12px; font-size: 12px; color: rgba(255, 255, 255, 0.55); letter-spacing: 0.02em; } 3427 .vt-footer-bottom a { color: rgba(255, 255, 255, 0.55); text-decoration: none; transition: color 0.2s; } 3428 .vt-footer-bottom a:hover { color: #ff5a1f; } 3429 @media (max-width: 1100px) { 3430 .vt-footer-top { grid-template-columns: 1fr 1fr 1fr; gap: 32px; } 3431 } 3432 @media (max-width: 900px) { 3433 .vt-footer-top { grid-template-columns: 1fr 1fr; gap: 36px; } 3434 } 3435 @media (max-width: 540px) { 3436 .vt-footer-top { grid-template-columns: 1fr; gap: 28px; } 3437 .vt-footer-bottom { flex-direction: column; gap: 6px; } 3438 } 3439</style> 3440<footer class="vt-footer"> 3441 <div class="vt-footer-container"> 3442 <div class="vt-footer-top"> 3443 <!-- Brand --> 3444 <div class="vt-footer-col"> 3445 <a href="/" class="vt-footer-logo"> 3446 <img src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/66e66e4f1167498ba9cbb756_logo-horiz-no-bg-white.avif" alt="Virtustant" /> 3447 </a> 3448 <p class="vt-footer-tagline">Zero fee remote staffing. Vetted talent from 18 Latin American countries plus South Africa and the Philippines. Lifetime replacement guarantee. Based in St. Petersburg, FL.</p> 3449 </div> 3450 <!-- Product --> 3451 <div class="vt-footer-col"> 3452 <h6><a href="/services">Product</a></h6> 3453 <ul> 3454 <li><a href="/services">Services</a></li> 3455 <li><a href="/virtual-assistant-services">Virtual Assistant Services</a></li> 3456 <li><a href="/nearshore-staffing">Nearshore Staffing</a></li> 3457 <li><a href="/hire-in-argentina">Hire in Argentina</a></li> 3458 <li><a href="/about-us">About Us</a></li> 3459 <li><a href="/pricing">Pricing</a></li> 3460 <li><a href="/compare-agencies">Compare agencies</a></li> 3461 <li><a href="/zero-fee-model">The Zero-Fee Model</a></li> 3462 <li><a href="/testimonials">Testimonials</a></li> 3463 <li><a href="/contact-us">Contact Us</a></li> 3464 <li><a href="/blog">Blog</a></li> 3465 <li><a href="/blog/llm-info">About Virtustant (AI reference)</a></li> 3466 <li><a href="/referral">Refer a Business</a></li> 3467 </ul> 3468 </div> 3469 <!-- Roles --> 3470 <div class="vt-footer-col"> 3471 <h6><a href="/roles">Roles</a></h6> 3472 <ul> 3473 <li><a href="/roles/virtual-assistant">Virtual Assistants</a></li> 3474 <li><a href="/roles/executive-assistant">Executive Assistants</a></li> 3475 <li><a href="/roles/customer-service-specialist">Customer Service Specialists</a></li> 3476 <li><a href="/roles/sales-development-representative">Sales Reps</a></li> 3477 <li><a href="/roles/bookkeeper">Bookkeepers</a></li> 3478 <li><a href="/roles/marketing-specialist">Marketers</a></li> 3479 <li><a href="/roles/social-media-manager">Social Media Managers</a></li> 3480 <li><a href="/roles/designer">Designers</a></li> 3481 <li><a href="/roles" class="vt-footer-roles-all">All roles â</a></li> 3482 </ul> 3483 </div> 3484 <!-- Countries --> 3485 <div class="vt-footer-col"> 3486 <h6><a href="/countries">Hire by Country</a></h6> 3487 <ul> 3488 <li><a href="/hire-in-argentina">Argentina</a></li> 3489 <li><a href="/countries/hire-in-brazil">Brazil</a></li> 3490 <li><a href="/countries/hire-in-south-africa">South Africa</a></li> 3491 <li><a href="/countries/hire-in-mexico">Mexico</a></li> 3492 <li><a href="/countries/hire-in-colombia">Colombia</a></li> 3493 <li><a href="/countries/hire-in-costa-rica">Costa Rica</a></li> 3494 <li><a href="/countries/hire-in-honduras">Honduras</a></li> 3495 <li><a href="/countries/hire-in-ecuador">Ecuador</a></li> 3496 <li><a href="/countries/hire-in-guatemala">Guatemala</a></li> 3497 <li><a href="/countries/hire-in-peru">Peru</a></li> 3498 <li><a href="/countries" class="vt-footer-roles-all">All 20 countries â</a></li> 3499 </ul> 3500 </div> 3501 <!-- Industry --> 3502 <div class="vt-footer-col"> 3503 <h6><a href="/industries">Hire by Industry</a></h6> 3504 <ul> 3505 <li><a href="/industries/real-estate">Real Estate</a></li> 3506 <li><a href="/industries/property-management">Property Management</a></li> 3507 <li><a href="/industries/healthcare">Healthcare</a></li> 3508 <li><a href="/industries/legal">Legal</a></li> 3509 <li><a href="/industries/insurance">Insurance</a></li> 3510 <li><a href="/industries/accounting-bookkeeping">Accounting & Bookkeeping</a></li> 3511 <li><a href="/industries/ecommerce">E-commerce</a></li> 3512 <li><a href="/industries/coaching">Coaching</a></li> 3513 <li><a href="/industries" class="vt-footer-roles-all">All industries â</a></li> 3514 </ul> 3515 </div> 3516 <!-- Software --> 3517 <div class="vt-footer-col"> 3518 <h6><a href="/softwares">Hire by Software Expertise</a></h6> 3519 <ul> 3520 <li><a href="/softwares/hire-a-quickbooks-assistant">QuickBooks</a></li> 3521 <li><a href="/softwares/hire-a-hubspot-assistant">HubSpot</a></li> 3522 <li><a href="/softwares/hire-a-salesforce-assistant">Salesforce</a></li> 3523 <li><a href="/softwares/hire-a-shopify-assistant">Shopify</a></li> 3524 <li><a href="/softwares/hire-a-xero-assistant">Xero</a></li> 3525 <li><a href="/softwares/hire-a-klaviyo-assistant">Klaviyo</a></li> 3526 <li><a href="/softwares/hire-a-amazon-seller-central-assistant">Amazon Seller Central</a></li> 3527 <li><a href="/softwares/hire-a-go-high-level-assistant">Go High Level</a></li> 3528 <li><a href="/softwares" class="vt-footer-roles-all">
3528All softwares â</a></li> 3529 </ul> 3530 </div> 3531 <!-- Contact --> 3532 <div class="vt-footer-col"> 3533 <h6><a href="/contact-us">Contact</a></h6> 3534 <ul> 3535 <li><a href="mailto:[email protected]">[email protected]</a></li> 3536 <li><a href="tel:+17275132583">+1 727 513 2583</a></li> 3537 <li><span>7901 4th St N, Ste 300, St. Petersburg, FL 33702</span></li> 3538 </ul> 3539 </div> 3540 </div> 3541 <div class="vt-footer-bottom"> 3542 <div>© 2026 Virtustant · All rights reserved · <a href="/terms-and-conditions">Terms & Conditions</a> · <a href="/privacy-policy">Privacy Policy</a></div> 3543 <div>Zero placement fees · Lifetime replacement guarantee · <a href="https://www.g2.com/products/virtustant/reviews" target="_blank" rel="noopener">4.9/5 on G2 (70 reviews)</a> · <a href="https://www.trustpilot.com/review/virtustant.com" target="_blank" rel="noopener">4.5/5 on Trustpilot (163 reviews)</a></div> 3544 </div> 3545 </div> 3546</footer></div></div>
3546<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=66e37e1f7b0b7a08bf707deb" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
3546<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/js/webflow.schunk.b36de0610a35aa79.js" type="text/javascript" integrity="sha384-bOZ0zosqGRfOla7kqUultK9km3dXI3K5kOn6mDnozBPY/ZGl9/GKllrjZ0EdPONC" crossorigin="anonymous"></script>
3546<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/js/webflow.schunk.452c49d530f9cb2a.js" type="text/javascript" integrity="sha384-8dYLi/MoW8XaXMDsHRl3+KZN/lpOQ18qR3B8M0hl18j3cOmRaicYt2FSAgJaO3PA" crossorigin="anonymous"></script>
3546<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/js/webflow.9cc815b4.684c43e34550506b.js" type="text/javascript" integrity="sha384-n2o58Wsz+SuD4TjPW3QVCmnp3O7ha4+RguhwUVR0OYfHPtt98FCdPdh3/hmLlnHv" crossorigin="anonymous"></script>
3546<script type="text/javascript"> 3547 _linkedin_partner_id = '7816193'; 3548 window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; 3549 window._linkedin_data_partner_ids.push(_linkedin_partner_id); 3550</script>
vendor: 1 bytes, line 3550
3550
3551<script type="text/javascript"> 3552 (function (l) { 3553 if (!l) { 3554 window.lintrk = function (a, b) { 3555 window.lintrk.q.push([a, b]); 3556 }; 3557 window.lintrk.q = []; 3558 } 3559 var s = document.getElementsByTagName('script')[0]; 3560 var b = document.createElement('script'); 3561 b.type = 'text/javascript'; 3562 b.async = true; 3563 b.src = 'https://snap.licdn.com/li.lms-analytics/insight.min.js'; 3564 s.parentNode.insertBefore(b, s); 3565 })(window.lintrk); 3566</script>
3566 3567<noscript> 3568 <img height="1" width="1" style="display: none" alt="" src="https://px.ads.linkedin.com/collect/?pid=7816193&fmt=gif" /> 3569</noscript>
vendor: 68 bytes, lines 3569-3570
3569 3570<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
3570GTM-TM59XZLC
vendor: 88 bytes, lines 3570-3572
3570" height="0" width="0" style="display: none; visibility: hidden"></iframe></noscript> 3571 3572
3573<!-- ===================================================================== --> 3574<!-- CANONICAL ENTITY NODE - SINGLE SOURCE OF TRUTH --> 3575<!-- Organization + ProfessionalService + founders + WebSite. --> 3576<!-- #organization is defined HERE and ONLY here. Every other page, script --> 3577<!-- and CMS template must reference it as {"@id":"https://www.virtustant --> 3578<!-- .com/#organization"} and must never redeclare its properties. --> 3579<!-- RATINGS: this node carries no aggregateRating. The G2-sourced rating --> 3580<!-- (4.9 across 70 reviews) is declared at PAGE level on / and --> 3581<!-- /testimonials, deliberately. Google's review-snippet docs say an --> 3582<!-- entity that controls reviews about itself is ineligible for the star --> 3583<!-- feature, and aggregateRating is not a supported Organization --> 3584<!-- property, so this earns no rich result and is not meant to. It is --> 3585<!-- there for AI engines, which parse JSON-LD generically. Keep it only --> 3586<!-- while it stays truthful and attributable: cite g2.com as the source --> 3587<!-- and keep ratingCount in sync with the live G2 number (70 on --> 3588<!-- 13 Sep 2026). Do not add Review nodes here. --> 3589<!-- ===================================================================== -->
3590<script type="application/ld+json">{ 3591 "@context": "https://schema.org", 3592 "@graph": [ 3593 { 3594 "@type": [ 3595 "Organization", 3596 "ProfessionalService" 3597 ], 3598 "@id": "https://www.virtustant.com/#organization", 3599 "name": "Virtustant", 3600 "legalName": "Virtustant LLC", 3601 "url": "https://www.virtustant.com", 3602 "logo": "https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/68ac8e76fe4f3133a322ed44_logo-virtustant-page.png", 3603 "image": "https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/68ac8e76fe4f3133a322ed44_logo-virtustant-page.png", 3604 "priceRange": "From $7 per hour", 3605 "description": "Virtustant is a zero fee remote staffing agency, founded in 2021 in St. Petersburg, Florida, that places vetted talent from 18 Latin American countries plus South Africa and the Philippines with US businesses: virtual assistants, executive assistants, bookkeepers, sales reps, customer service, designers, marketers, and engineers. A shortlist of 3 to 5 vetted candidates within 48 hours of the first call, and the hire can start in 72 hours, in calendar hours including weekends. No placement or recruitment fees and a lifetime replacement guarantee. Rated 4.9/5 on G2 (70 reviews) and 4.5/5 on Trustpilot (163 reviews), with 2,000+ placements since 2021.", 3606 "slogan": "Shortlist in 48 hours. Start in 72 hours.", 3607 "foundingDate": "2021", 3608 "founder": [ 3609 { 3610 "@id": "https://www.virtustant.com/about-us#erik-reid" 3611 }, 3612 { 3613 "@id": "https://www.virtustant.com/about-us#kevin-wright" 3614 } 3615 ], 3616 "email": "[email protected]", 3617 "telephone": "+1-727-513-2583", 3618 "address": { 3619 "@type": "PostalAddress", 3620 "streetAddress": "7901 4th St N, Ste 300", 3621 "addressLocality": "St. Petersburg", 3622 "addressRegion": "FL", 3623 "postalCode": "33702", 3624 "addressCountry": "US" 3625 }, 3626 "contactPoint": [ 3627 { 3628 "@type": "ContactPoint", 3629 "telephone": "+1-727-513-2583", 3630 "contactType": "customer service", 3631 "availableLanguage": "en", 3632 "hoursAvailable": { 3633 "@type": "OpeningHoursSpecification", 3634 "dayOfWeek": [ 3635 "Monday", 3636 "Tuesday", 3637 "Wednesday", 3638 "Thursday", 3639 "Friday" 3640 ], 3641 "opens": "09:00", 3642 "closes": "18:00" 3643 } 3644 }, 3645 { 3646 "@type": "ContactPoint", 3647 "email": "[email protected]", 3648 "contactType": "customer service", 3649 "availableLanguage": "en" 3650 } 3651 ], 3652 "areaServed": "US", 3653 "knowsLanguage": [ 3654 "en", 3655 "es" 3656 ], 3657 "knowsAbout": [ 3658 "nearshore staffing", 3659 "remote staffing", 3660 "virtual assistants", 3661 "LATAM talent", 3662 "LATAM talent recruitment", 3663 "executive assistants", 3664 "bookkeeping", 3665 "sales support", 3666 "customer service", 3667 "remote hiring", 3668 "talent acquisition", 3669 "HR management" 3670 ], 3671 "sameAs": [ 3672 "https://www.linkedin.com/company/virtustant", 3673 "https://www.instagram.com/virtustant_", 3674 "https://www.facebook.com/virtustant", 3675 "https://www.trustpilot.com/review/virtustant.com", 3676 "https://www.g2.com/products/virtustant/reviews", 3677 "https://clutch.co/profile/virtustant", 3678 "https://www.youtube.com/@virtustant", 3679 "https://www.crunchbase.com/organization/virtustant-llc", 3680 "https://www.glassdoor.com/Overview/Working-at-Virtustant-EI_IE9151728.htm", 3681 "https://jobs.virtustant.com/" 3682 ] 3683 }, 3684 { 3685 "@type": "Person", 3686 "@id": "https://www.virtustant.com/about-us#erik-reid", 3687 "name": "Erik Reid", 3688 "url": "https://www.virtustant.com/about-us#erik-reid", 3689 "jobTitle": "Co-Founder", 3690 "description": "Co-founder of Virtustant, which he founded in 2021 with Kevin Wright. A former financial analyst who ran an eCommerce business before starting Virtustant.", 3691 "image": "https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/6a6a2a409328a6d17ee62668_erik-320.webp", 3692 "worksFor": { 3693 "@id": "https://www.virtustant.com/#organization" 3694 }, 3695 "sameAs": [ 3696 "https://www.linkedin.com/in/erik-reid-b0a077126/" 3697 ] 3698 }, 3699 { 3700 "@type": "Person", 3701 "@id": "https://www.virtustant.com/about-us#kevin-wright", 3702 "name": "Kevin Wright", 3703 "url": "https://www.virtustant.com/about-us#kevin-wright", 3704 "jobTitle": "Co-Founder", 3705 "description": "Co-founder of Virtustant, which he founded in 2021 with Erik Reid. Before Virtustant he built and ran an international education business, recruiting, training and managing teams across borders. Reviews all content Virtustant publishes.", 3706 "image": "https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/6a6a2a409328a6d17ee62665_kevin-320.webp", 3707 "worksFor": { 3708 "@id": "https://www.virtustant.com/#organization" 3709 }, 3710 "sameAs": [ 3711 "https://www.linkedin.com/in/kevin-virtustant-intelliscreen-cofounder/" 3712 ] 3713 }, 3714 { 3715 "@type": "Person", 3716 "@id": "https://www.virtustant.com/about-us#alan-schultz", 3717 "name": "Alan Schultz", 3718 "url": "https://www.virtustant.com/about-us#alan-schultz", 3719 "jobTitle": "CMO", 3720 "description": "Chief Marketing Officer at Virtustant, leading content, SEO and AI search visibility. Author of the cost and remote-hiring guides on the Virtustant blog.", 3721 "image": "https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb/6850815a0f07d145d8291b9d_image%202.webp", 3722 "worksFor": { 3723 "@id": "https://www.virtustant.com/#organization" 3724 }, 3725 "sameAs": [ 3726 "https://www.linkedin.com/in/alan-schultz-b0b6ba173/" 3727 ] 3728 }, 3729 { 3730 "@type": "WebSite", 3731 "@id": "https://www.virtustant.com/#website", 3732 "url": "https://www.virtustant.com", 3733 "name": "Virtustant", 3734 "publisher": { 3735 "@id": "https://www.virtustant.com/#organization" 3736 }, 3737 "inLanguage": "en-US" 3738 } 3739 ] 3740 }</script>
3740 3741 3742<!-- vt-related-inject: internal links on high-intent posts -->
3743<script>(function rel(){try{var p=location.pathname.replace(/\/+$/,''); 3744var T=['/testimonials','Client reviews and video testimonials']; 3745var P=['/pricing','See our transparent pricing']; 3746var S=['/services','How our nearshore staffing works']; 3747var R=['/blog/2026-nearshore-rate-report','The 2026 Nearshore Rate Report']; 3748var C=['/blog/nearshore-virtual-assistant-cost','How much a nearshore virtual assistant costs']; 3749var sets={ 3750'/blog/2026-nearshore-rate-report':[P,C,S,T], 3751'/blog/nearshore-virtual-assistant-cost':[R,P,S,T], 3752'/blog/virtustant-vs-near':[T,P,S], 3753'/blog/virtustant-vs-hirelatam':[T,P,S], 3754'/blog/virtustant-vs-somewhere':[T,P,S], 3755'/blog/virtustant-vs-upwork':[T,P,S], 3756'/blog/best-nearshore-virtual-assistant-companies':[T,S,P], 3757'/blog/best-bilingual-virtual-assistant-company':[T,S,P], 3758'/blog/best-staffing-agencies-for-remote-jobs':[T,S,P], 3759'/blog/upwork-alternatives':[T,S,P], 3760'/blog/questions-to-ask-before-hiring-a-staffing-agency':[T,S,P] 3761}; 3762var links=sets[p];if(!links)return;if(document.querySelector('.vt-related'))return;var body=document.querySelector('.w-richtext')||document.querySelector('[class*="rich-text"]');if(!body)return;var box=document.createElement('div');box.className='vt-related';box.style.cssText='margin:32px 0 8px;padding:20px 24px;border:1px solid rgba(0,0,0,.1);border-radius:12px;background:#F8F8F8;font-family:Montserrat,sans-serif';var h=document.createElement('div');h.textContent='Related resources';h.style.cssText='font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#FF5A1F;margin-bottom:10px';box.appendChild(h);var ul=document.createElement('ul');ul.style.cssText='margin:0;padding:0;list-style:none';links.forEach(function(l){var li=document.createElement('li');li.style.cssText='margin:7px 0';var a=document.createElement('a');a.href=l[0];a.textContent=l[1];a.style.cssText='color:#232323;text-decoration:underline';li.appendChild(a);ul.appendChild(li);});box.appendChild(ul);body.appendChild(box);}catch(e){}})();</script>
3762 3763<!-- vt: takeaways + tag pills fix --> 3764<style>#vt-tk-src{display:none}.collection-list-2{display:flex;flex-wrap:wrap;gap:8px;width:auto;max-width:100%;align-items:center;height:auto}.collection-list-2 .w-dyn-item{width:auto;height:auto}.blogpost_category-link{width:auto;height:auto;white-space:nowrap}.blog-tag{width:auto;height:auto;white-space:nowrap}</style>
3765<script>document.addEventListener('DOMContentLoaded',function(){var s=document.getElementById('vt-tk-src');var tk=s?s.innerHTML.trim():'';var b=document.querySelector('.vt-takeaways');if(b&&tk&&tk.replace(/<[^>]*>/g,'').trim().length>0){b.style.display='block';b.querySelector('.vt-takeaways-body').innerHTML=tk}});</script>
3765<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a1db74a5220e9dcae8c311e%2Frevaleadtrack3-0.0.1.js" type="text/javascript"></script>
3765<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a1f40cc603870dde8d72b83%2Ffinsweettocblogloader-1.0.0.js" type="text/javascript"></script>
3765<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a28a62750a1a2ffba371b09%2Fvsrfix2-1.0.0.js" type="text/javascript"></script>
3765<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a2aaf279d5ff6cd8d4dc943%2Fvpregion-1.0.0.js" type="text/javascript"></script>
3765<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a2f9b8765aee166195cd7d8%2Fogurlinjector-1.0.0-1781549699327.js" type="text/javascript"></script>
3765<script src="https://cdn.prod.website-files.com/66e37e1f7b0b7a08bf707deb%2F689e5ba67671442434f3ca35%2F6a341d6076115edd630e8048%2Fvtmobilefix4-1.0.0.js" type="text/javascript"></script>
3765</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.