{"id":987672,"date":"2026-10-19T17:36:04","date_gmt":"2026-10-19T12:06:04","guid":{"rendered":"https:\/\/veyvix.com\/?page_id=987672"},"modified":"2026-10-19T17:37:16","modified_gmt":"2026-10-19T12:07:16","slug":"veyvix-site-bridge","status":"publish","type":"page","link":"https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/","title":{"rendered":"VeyVix Site Bridge"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"987672\" class=\"elementor elementor-987672\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9c27c75 e-flex e-con-boxed e-con e-parent\" data-id=\"9c27c75\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f7a34e5 elementor-widget elementor-widget-html\" data-id=\"f7a34e5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- VeyVix Site Bridge: purchase page. Paste into a \"Custom HTML\" block (or an Elementor HTML widget) on https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/ -->\n<!-- Self-contained: all styles are scoped to .vxb-buy, nothing leaks into the theme. Needs the API at https:\/\/api.veyvix.com (see docs\/API.md). -->\n<style>\n.vxb-buy{--b-accent:#6904f2;--b-accent-hover:#5503c4;--b-accent-soft:#9f6df3;--b-tint:#dbd3ff;--b-tint-faint:#f3f0ff;--b-ink:#111827;--b-cream:#faf9f7;--b-line:#e6e1f5;--b-muted:#5b6272;--b-err:#b42318;--b-ok:#067647;box-sizing:border-box;max-width:1120px;margin:0 auto;padding:0 16px;color:var(--b-ink);font-family:\"Instrument Sans\",\"IBM Plex Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;font-size:16px;line-height:1.6}\n.vxb-buy *,.vxb-buy *::before,.vxb-buy *::after{box-sizing:border-box}\n.vxb-buy h2,.vxb-buy h3,.vxb-buy p,.vxb-buy ul,.vxb-buy ol,.vxb-buy fieldset,.vxb-buy details{margin:0;padding:0;border:0}\n.vxb-buy fieldset{min-width:0;width:100%}\n.vxb-buy h2,.vxb-buy h3{color:var(--b-ink);font-family:inherit;letter-spacing:-.02em;line-height:1.2;text-transform:none}\n.vxb-buy .b-head{text-align:center;max-width:720px;margin:0 auto 28px}\n.vxb-buy .b-eyebrow{display:inline-block;margin-bottom:12px;padding:4px 12px;border-radius:999px;background:var(--b-tint);color:#3b0a8c;font-size:13px;font-weight:600}\n.vxb-buy .b-head h2{font-size:clamp(28px,4vw,40px);font-weight:700}\n.vxb-buy .b-head p{margin-top:12px;color:var(--b-muted);font-size:17px}\n.vxb-buy .b-toggle{display:flex;justify-content:center;margin:0 0 28px}\n.vxb-buy .b-toggle-inner{display:inline-flex;padding:4px;border:1px solid var(--b-line);border-radius:999px;background:#fff}\n.vxb-buy .b-toggle label{position:relative;margin:0;cursor:pointer}\n.vxb-buy .b-toggle input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}\n.vxb-buy .b-toggle span{display:block;padding:8px 20px;border-radius:999px;color:var(--b-muted);font-size:15px;font-weight:600;transition:background .15s,color .15s}\n.vxb-buy .b-toggle input:checked+span{background:var(--b-accent);color:#fff}\n.vxb-buy .b-toggle input:focus-visible+span{outline:2px solid var(--b-accent);outline-offset:2px}\n.vxb-buy .b-save{margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--b-tint);color:#3b0a8c;font-size:12px}\n.vxb-buy .b-toggle input:checked+span .b-save{background:rgba(255,255,255,.25);color:#fff}\n.vxb-buy .b-plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:stretch}\n.vxb-buy .b-plan{position:relative;display:flex;flex-direction:column;gap:14px;padding:28px;border:1px solid var(--b-line);border-radius:18px;background:#fff;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}\n.vxb-buy .b-plan:hover{border-color:var(--b-accent-soft);box-shadow:0 12px 32px rgba(105,4,242,.1)}\n.vxb-buy .b-plan.is-selected{border-color:var(--b-accent);box-shadow:0 0 0 2px var(--b-accent),0 16px 40px rgba(105,4,242,.14);background:var(--b-tint-faint)}\n.vxb-buy .b-plan input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}\n.vxb-buy .b-plan:focus-within{outline:2px solid var(--b-accent);outline-offset:3px}\n.vxb-buy .b-plan h3{font-size:20px;font-weight:700}\n.vxb-buy .b-plan .b-sub{color:var(--b-muted);font-size:15px}\n.vxb-buy .b-price{display:flex;align-items:baseline;gap:6px}\n.vxb-buy .b-amount{font-size:44px;font-weight:700;letter-spacing:-.03em;line-height:1}\n.vxb-buy .b-per{color:var(--b-muted);font-size:15px}\n.vxb-buy .b-tax{color:var(--b-muted);font-size:13px}\n.vxb-buy .b-list{list-style:none;display:grid;gap:8px;font-size:15px}\n.vxb-buy .b-list li{position:relative;padding-left:26px}\n.vxb-buy .b-list li::before{content:\"\";position:absolute;left:0;top:5px;width:16px;height:16px;border-radius:50%;background:var(--b-accent) url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.3l2.4 2.4 4.6-4.9' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\") center\/16px no-repeat}\n.vxb-buy .b-badge{position:absolute;top:-13px;left:24px;padding:3px 12px;border-radius:999px;background:var(--b-accent);color:#fff;font-size:12px;font-weight:700;letter-spacing:.02em}\n.vxb-buy .b-plan--sales{cursor:default;background:var(--b-cream)}\n.vxb-buy .b-plan--sales:hover{border-color:var(--b-line);box-shadow:none}\n.vxb-buy .b-link{position:relative;z-index:1;display:inline-block;margin-top:auto;padding:10px 18px;border:1px solid var(--b-accent);border-radius:10px;color:var(--b-accent);font-weight:600;text-align:center;text-decoration:none}\n.vxb-buy .b-link:hover{background:var(--b-accent);color:#fff}\n.vxb-buy .b-link + .b-link{margin-top:8px}\n.vxb-buy .b-form{max-width:640px;margin:36px auto 0;padding:28px;border:1px solid var(--b-line);border-radius:18px;background:#fff;box-shadow:0 12px 32px rgba(17,24,39,.05)}\n.vxb-buy .b-form h3{margin-bottom:4px;font-size:22px;font-weight:700}\n.vxb-buy .b-summary{margin:0 0 20px;color:var(--b-muted);font-size:15px}\n.vxb-buy .b-summary strong{color:var(--b-ink)}\n.vxb-buy .b-field{margin-bottom:16px}\n.vxb-buy .b-field label{display:block;margin:0 0 6px;font-size:14px;font-weight:600;color:var(--b-ink)}\n.vxb-buy .b-field input[type=email],.vxb-buy .b-field input[type=text]{display:block;width:100%;height:48px;margin:0;padding:0 14px;border:1px solid #cfc8ea;border-radius:10px;background:#fff;color:var(--b-ink);font:inherit;font-size:16px;box-shadow:none}\n.vxb-buy .b-field input:focus{border-color:var(--b-accent);outline:3px solid var(--b-tint);outline-offset:0}\n.vxb-buy .b-field input[aria-invalid=true]{border-color:var(--b-err)}\n.vxb-buy .b-hint{margin-top:6px;color:var(--b-muted);font-size:13px}\n.vxb-buy .b-error{margin-top:6px;color:var(--b-err);font-size:13px;min-height:0}\n.vxb-buy .b-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}\n.vxb-buy .b-terms{display:flex;gap:10px;align-items:flex-start;margin:4px 0 20px;font-size:14px;color:var(--b-muted)}\n.vxb-buy .b-terms input{flex:none;width:18px;height:18px;margin:3px 0 0;accent-color:var(--b-accent)}\n.vxb-buy .b-terms a{color:var(--b-accent);text-decoration:underline}\n.vxb-buy .b-submit{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;height:52px;padding:0 20px;border:0;border-radius:12px;background:var(--b-accent);color:#fff;font:inherit;font-size:17px;font-weight:700;cursor:pointer;transition:background .15s,transform .05s}\n.vxb-buy .b-submit:hover{background:var(--b-accent-hover)}\n.vxb-buy .b-submit:active{transform:translateY(1px)}\n.vxb-buy .b-submit:focus-visible{outline:3px solid var(--b-tint);outline-offset:2px}\n.vxb-buy .b-submit[disabled]{opacity:.7;cursor:progress}\n.vxb-buy .b-spin{display:none;width:18px;height:18px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:b-rot .7s linear infinite}\n.vxb-buy .is-loading .b-spin{display:inline-block}\n@keyframes b-rot{to{transform:rotate(360deg)}}\n.vxb-buy .b-alert{display:none;margin-bottom:16px;padding:12px 14px;border-radius:10px;background:#fef3f2;color:var(--b-err);font-size:14px}\n.vxb-buy .b-alert.is-on{display:block}\n.vxb-buy .b-secure{margin-top:14px;text-align:center;color:var(--b-muted);font-size:13px}\n.vxb-buy .b-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:48px 0 0;list-style:none;counter-reset:b}\n.vxb-buy .b-steps li{position:relative;padding:22px;border-radius:16px;background:var(--b-cream);counter-increment:b}\n.vxb-buy .b-steps li::before{content:counter(b);display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin-bottom:10px;border-radius:50%;background:var(--b-accent);color:#fff;font-weight:700}\n.vxb-buy .b-steps strong{display:block;margin-bottom:4px;font-size:17px}\n.vxb-buy .b-steps span{color:var(--b-muted);font-size:15px}\n.vxb-buy .b-faq{max-width:760px;margin:48px auto 0}\n.vxb-buy .b-faq h3{margin-bottom:12px;font-size:24px;text-align:center}\n.vxb-buy .b-faq details{border-bottom:1px solid var(--b-line)}\n.vxb-buy .b-faq summary{padding:16px 0;font-weight:600;cursor:pointer;list-style-position:inside}\n.vxb-buy .b-faq summary:focus-visible{outline:2px solid var(--b-accent);outline-offset:2px}\n.vxb-buy .b-faq details p{padding:0 0 16px;color:var(--b-muted)}\n.vxb-buy .b-done{display:none;max-width:640px;margin:36px auto 0;padding:32px;border-radius:18px;background:var(--b-tint-faint);text-align:center}\n.vxb-buy .b-done.is-on{display:block}\n.vxb-buy .b-done h3{font-size:24px;margin-bottom:8px}\n@media (max-width:860px){.vxb-buy .b-plans,.vxb-buy .b-steps{grid-template-columns:1fr}.vxb-buy .b-amount{font-size:38px}.vxb-buy .b-form{padding:22px 18px}}\n@media (prefers-reduced-motion:reduce){.vxb-buy *{transition:none!important;animation:none!important}}\n<\/style>\n<div class=\"vxb-buy\" id=\"vxb-buy\" data-api=\"https:\/\/api.veyvix.com\/v1\" data-return=\"https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/\" data-turnstile-sitekey=\"\">\n<div class=\"b-head\">\n<span class=\"b-eyebrow\">30-day free trial in the plugin &middot; no card needed to try<\/span>\n<h2>Choose your VeyVix Site Bridge plan<\/h2>\n<p>Edit pages, Elementor layouts, media and plugins by chatting with Claude on your own subscription. Every change is previewed and reversible. Buy here, and we email your activation key.<\/p>\n<\/div>\n<div class=\"b-toggle\" role=\"group\" aria-label=\"Billing period\"><div class=\"b-toggle-inner\">\n<label><input type=\"radio\" name=\"b-period\" value=\"monthly\"><span>Monthly<\/span><\/label>\n<label><input type=\"radio\" name=\"b-period\" value=\"yearly\" checked><span>Yearly <em class=\"b-save\" style=\"font-style:normal\">Save up to 17%<\/em><\/span><\/label>\n<\/div><\/div>\n<form id=\"b-form\" novalidate>\n<fieldset class=\"b-plans\">\n<legend style=\"position:absolute;left:-9999px\">Plan<\/legend>\n<label class=\"b-plan is-selected\" data-tier=\"single\">\n<input type=\"radio\" name=\"b-tier\" value=\"single\" checked>\n<span class=\"b-badge\">Most popular<\/span>\n<h3>1 website<\/h3>\n<p class=\"b-sub\">One live site, one license.<\/p>\n<p class=\"b-price\"><span class=\"b-amount\" data-amount=\"single\">$175.82<\/span><span class=\"b-per\" data-per>\/ year<\/span><\/p>\n<p class=\"b-tax\">Including 18% GST<\/p>\n<ul class=\"b-list\"><li>All features, unlimited chats<\/li><li>Pages, posts, media &amp; Elementor<\/li><li>Preview, confirm &amp; one-click undo<\/li><li>Updates in WordPress<\/li><\/ul>\n<\/label>\n<label class=\"b-plan\" data-tier=\"five\">\n<input type=\"radio\" name=\"b-tier\" value=\"five\">\n<h3>5 websites<\/h3>\n<p class=\"b-sub\">For freelancers and small studios.<\/p>\n<p class=\"b-price\"><span class=\"b-amount\" data-amount=\"five\">$824.82<\/span><span class=\"b-per\" data-per>\/ year<\/span><\/p>\n<p class=\"b-tax\">Including 18% GST<\/p>\n<ul class=\"b-list\"><li>Everything in 1 website<\/li><li>Use on up to 5 sites<\/li><li>Move a license between sites<\/li><li>Priority email support<\/li><\/ul>\n<\/label>\n<div class=\"b-plan b-plan--sales\">\n<h3>6+ websites<\/h3>\n<p class=\"b-sub\">Agencies and larger teams.<\/p>\n<p class=\"b-price\"><span class=\"b-amount\" style=\"font-size:32px\">Custom<\/span><\/p>\n<p class=\"b-tax\">Volume pricing<\/p>\n<ul class=\"b-list\"><li>Any number of sites<\/li><li>Invoicing &amp; onboarding help<\/li><li>Talk to us about your needs<\/li><\/ul>\n<a class=\"b-link\" href=\"https:\/\/veyvix.com\/index.php\/contact\/\">Contact sales<\/a>\n<a class=\"b-link\" href=\"https:\/\/veyvix.com\/index.php\/book-a-discovery-call\/\">Book a call<\/a>\n<\/div>\n<\/fieldset>\n<div class=\"b-form\">\n<h3>Your details<\/h3>\n<p class=\"b-summary\" id=\"b-summary\" aria-live=\"polite\"><\/p>\n<div class=\"b-alert\" id=\"b-alert\" role=\"alert\"><\/div>\n<div class=\"b-field\">\n<label for=\"b-email\">Email address<\/label>\n<input type=\"email\" id=\"b-email\" name=\"email\" autocomplete=\"email\" inputmode=\"email\" required aria-describedby=\"b-email-hint b-email-err\">\n<p class=\"b-hint\" id=\"b-email-hint\">Your activation key is emailed here.<\/p>\n<p class=\"b-error\" id=\"b-email-err\"><\/p>\n<\/div>\n<div class=\"b-field\">\n<label for=\"b-site\">Website<\/label>\n<input type=\"text\" id=\"b-site\" name=\"website\" autocomplete=\"url\" inputmode=\"url\" placeholder=\"example.com\" required aria-describedby=\"b-site-hint b-site-err\">\n<p class=\"b-hint\" id=\"b-site-hint\">The site you will connect Claude to. You can move the license later.<\/p>\n<p class=\"b-error\" id=\"b-site-err\"><\/p>\n<\/div>\n<div class=\"b-field b-hp\" aria-hidden=\"true\"><label for=\"b-company\">Company<\/label><input type=\"text\" id=\"b-company\" name=\"company\" tabindex=\"-1\" autocomplete=\"off\"><\/div>\n<div id=\"b-turnstile\" style=\"margin:0 0 16px\"><\/div>\n<label class=\"b-terms\"><input type=\"checkbox\" id=\"b-agree\" required><span>I agree to the <a href=\"https:\/\/veyvix.com\/index.php\/terms-of-service\/\" target=\"_blank\" rel=\"noopener\">Terms of Service<\/a> and <a href=\"https:\/\/veyvix.com\/index.php\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">Privacy Policy<\/a>.<\/span><\/label>\n<p class=\"b-error\" id=\"b-agree-err\" style=\"margin:-12px 0 16px\"><\/p>\n<button class=\"b-submit\" id=\"b-submit\" type=\"submit\"><span class=\"b-spin\" aria-hidden=\"true\"><\/span><span id=\"b-submit-text\">Continue to secure payment<\/span><\/button>\n<p class=\"b-secure\">Payment is processed by Razorpay. We never see your card details.<\/p>\n<\/div>\n<\/form>\n<div class=\"b-done\" id=\"b-done\" role=\"status\"><h3>Redirecting to Razorpay&hellip;<\/h3><p>If nothing happens, <a id=\"b-done-link\" href=\"#\" style=\"color:#6904f2;text-decoration:underline\">open the payment page<\/a>.<\/p><\/div>\n<ol class=\"b-steps\">\n<li><strong>Choose &amp; pay<\/strong><span>Pick a plan and pay on Razorpay's secure page. No account or password.<\/span><\/li>\n<li><strong>Get your key<\/strong><span>Your activation key arrives by email within a minute or two.<\/span><\/li>\n<li><strong>Paste it in WordPress<\/strong><span>Go to Site Bridge &rarr; License, paste the key and connect Claude.<\/span><\/li>\n<\/ol>\n<div class=\"b-faq\">\n<h3>Questions<\/h3>\n<details><summary>Can I try it before buying?<\/summary><p>Yes. The plugin includes a 30-day free trial with every feature. Start it in Site Bridge &rarr; License.<\/p><\/details>\n<details><summary>Do I need an Anthropic API key?<\/summary><p>No. You chat in Claude.ai, Claude Desktop or Claude Code on your existing Claude subscription.<\/p><\/details>\n<details><summary>Can Claude change my site without asking?<\/summary><p>No. Claude can only propose a change. Nothing is applied until you approve the exact preview, and every change can be undone.<\/p><\/details>\n<details><summary>What if I did not get my key?<\/summary><p>Check your spam folder, then <a href=\"https:\/\/veyvix.com\/index.php\/contact\/\" style=\"color:#6904f2\">contact us<\/a> with the email you used.<\/p><\/details>\n<\/div>\n<\/div>\n<script>\n(function () {\n  'use strict';\n  var root = document.getElementById('vxb-buy');\n  if (!root) { return; }\n  var API = (root.getAttribute('data-api') || '').replace(\/\\\/$\/, '');\n  var form = document.getElementById('b-form');\n  var el = function (id) { return document.getElementById(id); };\n  \/\/ Prices in USD cents, including 18% GST. api.veyvix.com\/v1\/public\/plans replaces them when it answers.\n  var prices = { single: { monthly: 1770, yearly: 17582 }, five: { monthly: 8142, yearly: 82482 } };\n  var names = { single: '1 website', five: '5 websites' };\n  var state = { tier: 'single', period: 'yearly' };\n  var tsKey = root.getAttribute('data-turnstile-sitekey') || '';\n  var tsToken = '';\n  var ALLOWED_HOSTS = ['rzp.io', 'razorpay.com', 'api.veyvix.com', 'veyvix.com'];\n  \/\/ Where customers land after paying (the page shows a thank-you message when it sees ?paid=1).\n  var RETURN_URL = (root.getAttribute('data-return') || (window.location.origin + window.location.pathname)).split('?')[0] + '?paid=1';\n  function money(cents) { return '$' + (cents \/ 100).toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); }\n  function render() {\n    ['single', 'five'].forEach(function (t) {\n      var node = root.querySelector('[data-amount=\"' + t + '\"]');\n      if (node) { node.textContent = money(prices[t][state.period]); }\n    });\n    Array.prototype.forEach.call(root.querySelectorAll('[data-per]'), function (n) { n.textContent = state.period === 'yearly' ? '\/ year' : '\/ month'; });\n    Array.prototype.forEach.call(root.querySelectorAll('.b-plan[data-tier]'), function (n) { n.classList.toggle('is-selected', n.getAttribute('data-tier') === state.tier); });\n    el('b-summary').innerHTML = '';\n    var strong = document.createElement('strong');\n    strong.textContent = names[state.tier] + ' \u00b7 ' + (state.period === 'yearly' ? 'Yearly' : 'Monthly') + ' \u00b7 ' + money(prices[state.tier][state.period]);\n    el('b-summary').appendChild(document.createTextNode('Selected: '));\n    el('b-summary').appendChild(strong);\n    el('b-summary').appendChild(document.createTextNode(' (incl. 18% GST)'));\n  }\n  Array.prototype.forEach.call(root.querySelectorAll('input[name=\"b-period\"]'), function (r) {\n    r.addEventListener('change', function () { if (r.checked) { state.period = r.value; render(); } });\n  });\n  Array.prototype.forEach.call(root.querySelectorAll('input[name=\"b-tier\"]'), function (r) {\n    r.addEventListener('change', function () { if (r.checked) { state.tier = r.value; render(); } });\n  });\n  \/\/ Deep link: ?plan=five:monthly\n  try {\n    var qp = new URLSearchParams(window.location.search).get('plan');\n    if (qp) {\n      var parts = qp.split(':');\n      if (prices[parts[0]] && (parts[1] === 'monthly' || parts[1] === 'yearly')) {\n        state.tier = parts[0]; state.period = parts[1];\n        root.querySelector('input[name=\"b-tier\"][value=\"' + state.tier + '\"]').checked = true;\n        root.querySelector('input[name=\"b-period\"][value=\"' + state.period + '\"]').checked = true;\n      }\n    }\n  } catch (e) { \/* ignore *\/ }\n  render();\n  \/\/ Live prices (optional; the built-in prices stay if this fails).\n  if (API && window.fetch) {\n    var c = window.AbortController ? new AbortController() : null;\n    if (c) { setTimeout(function () { c.abort(); }, 5000); }\n    fetch(API + '\/public\/plans', { headers: { Accept: 'application\/json' }, signal: c ? c.signal : undefined })\n      .then(function (r) { return r.ok ? r.json() : null; })\n      .then(function (data) {\n        if (!data || !Array.isArray(data.plans)) { return; }\n        data.plans.forEach(function (p) {\n          if (p && prices[p.tier] && (p.period === 'monthly' || p.period === 'yearly') && p.currency === 'USD' && Number.isInteger(p.total_minor) && p.total_minor > 0) {\n            prices[p.tier][p.period] = p.total_minor;\n          }\n        });\n        render();\n      })\n      .catch(function () { \/* keep built-in prices *\/ });\n  }\n  function setError(id, msg) {\n    var err = el(id + '-err');\n    var input = el(id);\n    if (err) { err.textContent = msg || ''; }\n    if (input) { if (msg) { input.setAttribute('aria-invalid', 'true'); } else { input.removeAttribute('aria-invalid'); } }\n  }\n  function normalizeSite(v) {\n    v = String(v || '').trim().toLowerCase().replace(\/^https?:\\\/\\\/\/, '').replace(\/^www\\.\/, '').split(\/[\\\/?#]\/)[0];\n    return v;\n  }\n  var EMAIL = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$\/;\n  var SITE = \/^[a-z0-9-]+(\\.[a-z0-9-]+)+$\/;\n  function validate() {\n    var ok = true; var first = null;\n    var email = el('b-email').value.trim();\n    var site = normalizeSite(el('b-site').value);\n    if (!EMAIL.test(email) || email.length > 254) { setError('b-email', 'Enter a valid email address. Your activation key is sent there.'); ok = false; first = first || el('b-email'); } else { setError('b-email'); }\n    if (!SITE.test(site) || site.length > 253) { setError('b-site', 'Enter your website address, for example example.com.'); ok = false; first = first || el('b-site'); } else { setError('b-site'); }\n    if (!el('b-agree').checked) { el('b-agree-err').textContent = 'Please accept the Terms and Privacy Policy to continue.'; ok = false; first = first || el('b-agree'); } else { el('b-agree-err').textContent = ''; }\n    if (first) { first.focus(); }\n    return ok ? { email: email, website: site } : null;\n  }\n  function showAlert(msg) {\n    var a = el('b-alert');\n    a.textContent = msg || '';\n    a.classList.toggle('is-on', !!msg);\n  }\n  function safeCheckoutUrl(u) {\n    try {\n      var x = new URL(u);\n      if (x.protocol !== 'https:') { return null; }\n      var h = x.hostname.toLowerCase();\n      for (var i = 0; i < ALLOWED_HOSTS.length; i++) {\n        if (h === ALLOWED_HOSTS[i] || h.slice(-(ALLOWED_HOSTS[i].length + 1)) === '.' + ALLOWED_HOSTS[i]) { return x.href; }\n      }\n    } catch (e) { \/* invalid *\/ }\n    return null;\n  }\n  function busy(on) {\n    var b = el('b-submit');\n    b.disabled = on;\n    b.classList.toggle('is-loading', on);\n    el('b-submit-text').textContent = on ? 'Creating secure checkout\u2026' : 'Continue to secure payment';\n  }\n  function goHosted(url) {\n    el('b-done').classList.add('is-on');\n    window.location.assign(url);\n  }\n  function loadRazorpay(cb) {\n    if (window.Razorpay) { cb(true); return; }\n    var sc = document.createElement('script');\n    sc.src = 'https:\/\/checkout.razorpay.com\/v1\/checkout.js';\n    sc.async = true;\n    sc.onload = function () { cb(!!window.Razorpay); };\n    sc.onerror = function () { cb(false); };\n    document.head.appendChild(sc);\n  }\n  form.addEventListener('submit', function (ev) {\n    ev.preventDefault();\n    showAlert('');\n    if (el('b-company').value) { return; } \/\/ honeypot\n    var data = validate();\n    if (!data) { return; }\n    if (tsKey && !tsToken) { showAlert('Please complete the security check first.'); return; }\n    busy(true);\n    var c = window.AbortController ? new AbortController() : null;\n    var t = c ? setTimeout(function () { c.abort(); }, 20000) : null;\n    fetch(API + '\/checkout', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application\/json', Accept: 'application\/json' },\n      body: JSON.stringify({ tier: state.tier, period: state.period, currency: 'USD', email: data.email, website: data.website, source: 'veyvix.com', turnstile_token: tsToken || undefined, return_url: RETURN_URL }),\n      signal: c ? c.signal : undefined\n    }).then(function (r) {\n      return r.json().catch(function () { return {}; }).then(function (j) { return { ok: r.ok, status: r.status, body: j }; });\n    }).then(function (res) {\n      if (t) { clearTimeout(t); }\n      var url = res.ok && res.body ? safeCheckoutUrl(res.body.short_url || res.body.checkout_url) : null;\n      if (!url) {\n        busy(false);\n        var msg = res.body && res.body.error && typeof res.body.error.message === 'string' ? res.body.error.message : (res.body && typeof res.body.message === 'string' ? res.body.message : '');\n        showAlert(res.status === 429 ? 'Too many attempts. Please wait a minute and try again.' : (msg || 'We could not start the payment. Please try again, or contact us if it keeps happening.'));\n        return;\n      }\n      el('b-done-link').href = url;\n      var subId = res.body.subscription_id;\n      var keyId = res.body.key_id;\n      \/\/ Preferred: open Razorpay's checkout as a popup on this page, then come back here automatically.\n      if (typeof subId === 'string' && \/^sub_[A-Za-z0-9]+$\/.test(subId) && typeof keyId === 'string' && \/^rzp_(test|live)_[A-Za-z0-9]+$\/.test(keyId)) {\n        loadRazorpay(function (ok) {\n          if (!ok) { goHosted(url); return; }\n          try {\n            var rz = new window.Razorpay({\n              key: keyId,\n              subscription_id: subId,\n              name: 'VeyVix Site Bridge',\n              description: names[state.tier] + ' \u00b7 ' + (state.period === 'yearly' ? 'Yearly' : 'Monthly'),\n              prefill: { email: data.email },\n              notes: { website: data.website },\n              theme: { color: '#6904f2' },\n              handler: function () {\n                \/\/ Payment finished. The activation key is emailed by our server when Razorpay confirms it.\n                el('b-done').classList.add('is-on');\n                window.location.assign(RETURN_URL);\n              },\n              modal: { ondismiss: function () { busy(false); } }\n            });\n            rz.on('payment.failed', function () { busy(false); showAlert('The payment did not go through. You have not been charged. Please try again.'); });\n            rz.open();\n          } catch (e) { goHosted(url); }\n        });\n        return;\n      }\n      goHosted(url);\n    }).catch(function () {\n      if (t) { clearTimeout(t); }\n      busy(false);\n      showAlert('We could not reach the payment server. Check your connection and try again.');\n    });\n  });\n  \/\/ Optional Cloudflare Turnstile (only when a site key is set on the root element).\n  if (tsKey) {\n    window.vxbTurnstileReady = function () {\n      window.turnstile.render('#b-turnstile', { sitekey: tsKey, callback: function (t) { tsToken = t; }, 'expired-callback': function () { tsToken = ''; } });\n    };\n    var ts = document.createElement('script');\n    ts.src = 'https:\/\/challenges.cloudflare.com\/turnstile\/v0\/api.js?render=explicit&onload=vxbTurnstileReady';\n    ts.async = true;\n    document.head.appendChild(ts);\n  }\n  \/\/ Back from Razorpay.\n  try {\n    if (new URLSearchParams(window.location.search).get('paid') === '1') {\n      var d = el('b-done');\n      d.querySelector('h3').textContent = 'Thank you! Check your email';\n      d.querySelector('p').textContent = 'Your activation key is on its way (it can take a minute or two; check spam too). Paste it in WordPress under Site Bridge \u2192 License.';\n      d.classList.add('is-on');\n      form.style.display = 'none';\n    }\n  } catch (e) { \/* ignore *\/ }\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Build custom interfaces and AI assistants tailored to your specific workflows.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":26,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-987672","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>VeyVix Site Bridge - VeyVix Tech \u2013 Build, Launch &amp; Grow Digitally<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"VeyVix Site Bridge - VeyVix Tech \u2013 Build, Launch &amp; Grow Digitally\" \/>\n<meta property=\"og:description\" content=\"Build custom interfaces and AI assistants tailored to your specific workflows.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/\" \/>\n<meta property=\"og:site_name\" content=\"VeyVix Tech \u2013 Build, Launch &amp; Grow Digitally\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-19T12:07:16+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/veyvix.com\\\/index.php\\\/services\\\/veyvix-site-bridge\\\/\",\"url\":\"https:\\\/\\\/veyvix.com\\\/index.php\\\/services\\\/veyvix-site-bridge\\\/\",\"name\":\"VeyVix Site Bridge - VeyVix Tech \u2013 Build, Launch &amp; Grow Digitally\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/veyvix.com\\\/#website\"},\"datePublished\":\"2026-10-19T12:06:04+00:00\",\"dateModified\":\"2026-10-19T12:07:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/veyvix.com\\\/index.php\\\/services\\\/veyvix-site-bridge\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/veyvix.com\\\/index.php\\\/services\\\/veyvix-site-bridge\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/veyvix.com\\\/index.php\\\/services\\\/veyvix-site-bridge\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/veyvix.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Services\",\"item\":\"https:\\\/\\\/veyvix.com\\\/index.php\\\/services\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"VeyVix Site Bridge\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/veyvix.com\\\/#website\",\"url\":\"https:\\\/\\\/veyvix.com\\\/\",\"name\":\"VeyVix Tech \u2013 Build, Launch & Grow Digitally\",\"description\":\"Technology That Moves You Forward\",\"publisher\":{\"@id\":\"https:\\\/\\\/veyvix.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/veyvix.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/veyvix.com\\\/#organization\",\"name\":\"VeyVix Tech \u2013 Build, Launch & Grow Digitally\",\"url\":\"https:\\\/\\\/veyvix.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/veyvix.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/veyvix.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/veyvix-logo-light.svg\",\"contentUrl\":\"https:\\\/\\\/veyvix.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/veyvix-logo-light.svg\",\"width\":280,\"height\":100,\"caption\":\"VeyVix Tech \u2013 Build, Launch & Grow Digitally\"},\"image\":{\"@id\":\"https:\\\/\\\/veyvix.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"VeyVix Site Bridge - VeyVix Tech \u2013 Build, Launch &amp; Grow Digitally","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/","og_locale":"en_US","og_type":"article","og_title":"VeyVix Site Bridge - VeyVix Tech \u2013 Build, Launch &amp; Grow Digitally","og_description":"Build custom interfaces and AI assistants tailored to your specific workflows.","og_url":"https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/","og_site_name":"VeyVix Tech \u2013 Build, Launch &amp; Grow Digitally","article_modified_time":"2026-10-19T12:07:16+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/","url":"https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/","name":"VeyVix Site Bridge - VeyVix Tech \u2013 Build, Launch &amp; Grow Digitally","isPartOf":{"@id":"https:\/\/veyvix.com\/#website"},"datePublished":"2026-10-19T12:06:04+00:00","dateModified":"2026-10-19T12:07:16+00:00","breadcrumb":{"@id":"https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/veyvix.com\/index.php\/services\/veyvix-site-bridge\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/veyvix.com\/"},{"@type":"ListItem","position":2,"name":"Services","item":"https:\/\/veyvix.com\/index.php\/services\/"},{"@type":"ListItem","position":3,"name":"VeyVix Site Bridge"}]},{"@type":"WebSite","@id":"https:\/\/veyvix.com\/#website","url":"https:\/\/veyvix.com\/","name":"VeyVix Tech \u2013 Build, Launch & Grow Digitally","description":"Technology That Moves You Forward","publisher":{"@id":"https:\/\/veyvix.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/veyvix.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/veyvix.com\/#organization","name":"VeyVix Tech \u2013 Build, Launch & Grow Digitally","url":"https:\/\/veyvix.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/veyvix.com\/#\/schema\/logo\/image\/","url":"https:\/\/veyvix.com\/wp-content\/uploads\/2026\/10\/veyvix-logo-light.svg","contentUrl":"https:\/\/veyvix.com\/wp-content\/uploads\/2026\/10\/veyvix-logo-light.svg","width":280,"height":100,"caption":"VeyVix Tech \u2013 Build, Launch & Grow Digitally"},"image":{"@id":"https:\/\/veyvix.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/veyvix.com\/index.php\/wp-json\/wp\/v2\/pages\/987672","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/veyvix.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/veyvix.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/veyvix.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/veyvix.com\/index.php\/wp-json\/wp\/v2\/comments?post=987672"}],"version-history":[{"count":5,"href":"https:\/\/veyvix.com\/index.php\/wp-json\/wp\/v2\/pages\/987672\/revisions"}],"predecessor-version":[{"id":987677,"href":"https:\/\/veyvix.com\/index.php\/wp-json\/wp\/v2\/pages\/987672\/revisions\/987677"}],"up":[{"embeddable":true,"href":"https:\/\/veyvix.com\/index.php\/wp-json\/wp\/v2\/pages\/26"}],"wp:attachment":[{"href":"https:\/\/veyvix.com\/index.php\/wp-json\/wp\/v2\/media?parent=987672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}