Public Access
fix: repair contact flow and buy flow targets
- Buy Now product IDs aligned to the Odoo shop (54/55/56), matching odoo/upsell.html - support.html contact form: rewire from dead ODOO4projects.com/website/form endpoint to n8n CRM webhook; remove /web/csrf_token prefetch; show success only on res.ok (previously always showed 'submitted' even when nothing was delivered) - /contactus links (footer nav, Schema contactPoint, order widget fallback, trial email) retargeted to support.html#contact; canonical/og:url corrected to /support.html - Custom Quote and footer contact handlers hardened with res.ok checks - buyNow basket target verified: 20.odoo4projects.com/shop/post_basket (200)
This commit is contained in:
1 parent
04d39157b8
commit
354799b9ca
5 files changed
+31
-22
No files matched your search
+1
-1
@@ -24,7 +24,7 @@ Enterprise-grade Odoo Community hosting without the enterprise price tag. Commun
|
|||||||
|
|
||||||
- Static site (index.html, support.html, legal.html, blog/) deployed via git push to git.odoo4projects.com; auto-deploys on every change.
|
- Static site (index.html, support.html, legal.html, blog/) deployed via git push to git.odoo4projects.com; auto-deploys on every change.
|
||||||
- Order flow: inline order widget on the homepage opens Stripe checkout; coupon FREE TRIAL = 1 month free; yearly billing saves roughly 8-10%; "Satisfied or reimbursed" guarantee; server location chosen at checkout (US, Brazil, India, Australia, Netherlands, UK).
|
- Order flow: inline order widget on the homepage opens Stripe checkout; coupon FREE TRIAL = 1 month free; yearly billing saves roughly 8-10%; "Satisfied or reimbursed" guarantee; server location chosen at checkout (US, Brazil, India, Australia, Netherlands, UK).
|
||||||
- Support: AI support bot (agent.js from static.odoo4projects.com) plus human team; email support@odoo4projects.com; /contactus route.
|
- Support: AI support bot (agent.js from static.odoo4projects.com) plus human team; email support@odoo4projects.com; contact form on support.html#contact.
|
||||||
- Blog with guides and news (10 posts); homepage renders it with search and pagination.
|
- Blog with guides and news (10 posts); homepage renders it with search and pagination.
|
||||||
|
|
||||||
## Capabilities and Constraints
|
## Capabilities and Constraints
|
||||||
|
|||||||
@@ -190,7 +190,7 @@
|
|||||||
<p>
|
<p>
|
||||||
<a href="https://odoo4projects.com/legal/privacy">Privacy</a> •
|
<a href="https://odoo4projects.com/legal/privacy">Privacy</a> •
|
||||||
<a href="https://odoo4projects.com/legal/terms">Terms</a> •
|
<a href="https://odoo4projects.com/legal/terms">Terms</a> •
|
||||||
<a href="https://odoo4projects.com/contactus">Contact</a>
|
<a href="https://ODOO4projects.com/support.html#contact">Contact</a>
|
||||||
</p>
|
</p>
|
||||||
<p class="unsubscribe">
|
<p class="unsubscribe">
|
||||||
<a href="https://odoo4projects.com/unsubscribe?token=USER_TOKEN">Unsubscribe</a> from these emails
|
<a href="https://odoo4projects.com/unsubscribe?token=USER_TOKEN">Unsubscribe</a> from these emails
|
||||||
|
|||||||
+6
-6
@@ -20,7 +20,7 @@
|
|||||||
"url": "https://ODOO4projects.com/",
|
"url": "https://ODOO4projects.com/",
|
||||||
"description": "Odoo hosting with fully managed infrastructure. Deploy in 5 minutes with automatic backups, SSL, and Git-based modules.",
|
"description": "Odoo hosting with fully managed infrastructure. Deploy in 5 minutes with automatic backups, SSL, and Git-based modules.",
|
||||||
"foundingDate": "2020",
|
"foundingDate": "2020",
|
||||||
"contactPoint": { "@type": "ContactPoint", "contactType": "customer support", "url": "https://ODOO4projects.com/contactus" },
|
"contactPoint": { "@type": "ContactPoint", "contactType": "customer support", "url": "https://ODOO4projects.com/support.html#contact" },
|
||||||
"sameAs": ["https://www.linkedin.com/company/odoo4projects/"],
|
"sameAs": ["https://www.linkedin.com/company/odoo4projects/"],
|
||||||
"offers": [
|
"offers": [
|
||||||
{ "@type": "Offer", "name": "Side Hustle", "price": "214.00", "priceCurrency": "USD", "url": "https://ODOO4projects.com/#pricing" },
|
{ "@type": "Offer", "name": "Side Hustle", "price": "214.00", "priceCurrency": "USD", "url": "https://ODOO4projects.com/#pricing" },
|
||||||
@@ -386,7 +386,7 @@
|
|||||||
<div class="price-save">Save 8%</div>
|
<div class="price-save">Save 8%</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="desc">"ODOO Standard .. that is all my business needs"</p>
|
<p class="desc">"ODOO Standard .. that is all my business needs"</p>
|
||||||
<a href="javascript:void(0)" class="btn btn-brass btn-buy" data-id="6">Buy Now</a>
|
<a href="javascript:void(0)" class="btn btn-brass btn-buy" data-id="54">Buy Now</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><i class="fas fa-check" style="color: var(--success)"></i> Launch Odoo CE in 5 minutes</li>
|
<li><i class="fas fa-check" style="color: var(--success)"></i> Launch Odoo CE in 5 minutes</li>
|
||||||
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic backups — no remembering</li>
|
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic backups — no remembering</li>
|
||||||
@@ -405,7 +405,7 @@
|
|||||||
<div class="price-save">Save 9%</div>
|
<div class="price-save">Save 9%</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="desc">"I need some modules and professional reports"</p>
|
<p class="desc">"I need some modules and professional reports"</p>
|
||||||
<a href="javascript:void(0)" class="btn btn-brass btn-buy" data-id="4">Buy Now</a>
|
<a href="javascript:void(0)" class="btn btn-brass btn-buy" data-id="55">Buy Now</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><i class="fas fa-check" style="color: var(--success)"></i> Launch Odoo CE in 5 minutes</li>
|
<li><i class="fas fa-check" style="color: var(--success)"></i> Launch Odoo CE in 5 minutes</li>
|
||||||
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic backups — no remembering</li>
|
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic backups — no remembering</li>
|
||||||
@@ -425,7 +425,7 @@
|
|||||||
<div class="price-save">Save 10%</div>
|
<div class="price-save">Save 10%</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="desc">"ODOO Enterprise is a must have!"</p>
|
<p class="desc">"ODOO Enterprise is a must have!"</p>
|
||||||
<a href="javascript:void(0)" class="btn btn-brass btn-buy" data-id="5">Buy Now</a>
|
<a href="javascript:void(0)" class="btn btn-brass btn-buy" data-id="56">Buy Now</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><i class="fas fa-check" style="color: var(--success)"></i> Launch Odoo CE in 5 minutes</li>
|
<li><i class="fas fa-check" style="color: var(--success)"></i> Launch Odoo CE in 5 minutes</li>
|
||||||
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic backups — no remembering</li>
|
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic backups — no remembering</li>
|
||||||
@@ -489,7 +489,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<p class="ow-coupon-status" id="orderCouponStatus">✓ Coupon applied</p>
|
<p class="ow-coupon-status" id="orderCouponStatus">✓ Coupon applied</p>
|
||||||
</div>
|
</div>
|
||||||
<a id="orderBuyBtn" href="/contactus" class="btn btn-brass ow-buy">Continue to Stripe →</a>
|
<a id="orderBuyBtn" href="/support.html#contact" class="btn btn-brass ow-buy">Continue to Stripe →</a>
|
||||||
<p class="ow-note">🔒 Secure Stripe checkout · Credit card required</p>
|
<p class="ow-note">🔒 Secure Stripe checkout · Credit card required</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -614,7 +614,7 @@
|
|||||||
<li><a href="index.html">Home</a></li>
|
<li><a href="index.html">Home</a></li>
|
||||||
<li><a href="support.html">Support</a></li>
|
<li><a href="support.html">Support</a></li>
|
||||||
<li><a href="legal.html">Legal</a></li>
|
<li><a href="legal.html">Legal</a></li>
|
||||||
<li><a href="/contactus">Contact us</a></li>
|
<li><a href="/support.html#contact">Contact us</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -846,7 +846,8 @@ var si = 0,
|
|||||||
requirements: requirements,
|
requirements: requirements,
|
||||||
area: 'quote'
|
area: 'quote'
|
||||||
}))
|
}))
|
||||||
}).then(function() {
|
}).then(function(r) {
|
||||||
|
if (!r.ok) throw new Error('bad status ' + r.status);
|
||||||
customQuoteForm.style.display = 'none';
|
customQuoteForm.style.display = 'none';
|
||||||
document.getElementById('customQuoteSuccess').style.display = 'block';
|
document.getElementById('customQuoteSuccess').style.display = 'block';
|
||||||
submitBtn.textContent = 'Submit Request';
|
submitBtn.textContent = 'Submit Request';
|
||||||
@@ -904,7 +905,8 @@ var si = 0,
|
|||||||
requirements: text,
|
requirements: text,
|
||||||
area: 'message'
|
area: 'message'
|
||||||
}))
|
}))
|
||||||
}).then(function () {
|
}).then(function (r) {
|
||||||
|
if (!r.ok) throw new Error('bad status ' + r.status);
|
||||||
form.reset();
|
form.reset();
|
||||||
submitBtn.disabled = false;
|
submitBtn.disabled = false;
|
||||||
showStatus("Thanks! We'll get back to you shortly.", false);
|
showStatus("Thanks! We'll get back to you shortly.", false);
|
||||||
|
|||||||
+19
-12
@@ -8,11 +8,11 @@
|
|||||||
content="Support and FAQ for ODOO4projects hosting. Get help with your Odoo instance, modules, backups, domains, and more."
|
content="Support and FAQ for ODOO4projects hosting. Get help with your Odoo instance, modules, backups, domains, and more."
|
||||||
/>
|
/>
|
||||||
<title>Support | ODOO4projects</title>
|
<title>Support | ODOO4projects</title>
|
||||||
<link rel="canonical" href="https://ODOO4projects.com/support" />
|
<link rel="canonical" href="https://ODOO4projects.com/support.html" />
|
||||||
<meta property="og:title" content="Support | ODOO4projects" />
|
<meta property="og:title" content="Support | ODOO4projects" />
|
||||||
<meta property="og:description" content="Support and FAQ for ODOO4projects hosting." />
|
<meta property="og:description" content="Support and FAQ for ODOO4projects hosting." />
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:url" content="https://ODOO4projects.com/support" />
|
<meta property="og:url" content="https://ODOO4projects.com/support.html" />
|
||||||
<meta name="twitter:card" content="summary_large_image" />
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
<link rel="icon" href="images/favicon.ico" />
|
<link rel="icon" href="images/favicon.ico" />
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
@@ -474,8 +474,7 @@
|
|||||||
<section class="contact-section" id="contact">
|
<section class="contact-section" id="contact">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>Still questions? Contact our support.</h2>
|
<h2>Still questions? Contact our support.</h2>
|
||||||
<form class="contact-form" id="supportForm" action="https://ODOO4projects.com/website/form/" method="POST" enctype="multipart/form-data">
|
<form class="contact-form" id="supportForm">
|
||||||
<input type="hidden" name="csrf_token" id="csrfToken" value="" />
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Your Name <span class="required">*</span></label>
|
<label>Your Name <span class="required">*</span></label>
|
||||||
<input type="text" id="contactName" name="contact_name" required placeholder="Your Name" />
|
<input type="text" id="contactName" name="contact_name" required placeholder="Your Name" />
|
||||||
@@ -528,23 +527,31 @@
|
|||||||
var form = document.getElementById("supportForm");
|
var form = document.getElementById("supportForm");
|
||||||
var submitBtn = form.querySelector(".btn");
|
var submitBtn = form.querySelector(".btn");
|
||||||
var successDiv = document.getElementById("formSuccess");
|
var successDiv = document.getElementById("formSuccess");
|
||||||
fetch("https://ODOO4projects.com/web/csrf_token")
|
|
||||||
.then(function (r) { return r.json(); })
|
|
||||||
.then(function (data) {
|
|
||||||
document.getElementById("csrfToken").value = data.result || data.csrf_token || "";
|
|
||||||
}).catch(function () {});
|
|
||||||
form.addEventListener("submit", function (e) {
|
form.addEventListener("submit", function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var name = document.getElementById("contactName").value.trim();
|
var name = document.getElementById("contactName").value.trim();
|
||||||
var email = document.getElementById("contactEmail").value.trim();
|
var email = document.getElementById("contactEmail").value.trim();
|
||||||
|
var uuid = document.getElementById("contactUuid").value.trim();
|
||||||
var subject = document.getElementById("contactSubject").value.trim();
|
var subject = document.getElementById("contactSubject").value.trim();
|
||||||
var question = document.getElementById("contactQuestion").value.trim();
|
var question = document.getElementById("contactQuestion").value.trim();
|
||||||
if (!name || !email || !subject || !question) { alert("Please fill in all required fields."); return; }
|
if (!name || !email || !subject || !question) { alert("Please fill in all required fields."); return; }
|
||||||
submitBtn.disabled = true;
|
submitBtn.disabled = true;
|
||||||
submitBtn.textContent = "Submitting...";
|
submitBtn.textContent = "Submitting...";
|
||||||
fetch(form.action, { method: "POST", body: new FormData(form) })
|
var payload = { name: name, email: email, subject: subject, requirements: question, area: "support" };
|
||||||
.then(function () { submitBtn.style.display = "none"; successDiv.classList.add("visible"); })
|
if (uuid) payload.uuid = uuid;
|
||||||
.catch(function () { submitBtn.disabled = false; submitBtn.textContent = "Submit"; alert("Could not submit. Please try again."); });
|
fetch("https://n8n.odoo4projects.com/webhook/ODOO4projects/crm", {
|
||||||
|
method: "POST",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
|
body: JSON.stringify(payload)
|
||||||
|
}).then(function (r) {
|
||||||
|
if (!r.ok) throw new Error("bad status " + r.status);
|
||||||
|
submitBtn.style.display = "none";
|
||||||
|
successDiv.classList.add("visible");
|
||||||
|
}).catch(function () {
|
||||||
|
submitBtn.disabled = false;
|
||||||
|
submitBtn.textContent = "Submit";
|
||||||
|
alert("Could not submit. Please try again.");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user