1739 lines
87 KiB
HTML
1739 lines
87 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>
|
|
ODOO4projects | Odoo Extensions for n8n & AI Automation
|
|
</title>
|
|
<script src="https://cdn.tailwindcss.com"></script>
|
|
<link
|
|
rel="stylesheet"
|
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"
|
|
/>
|
|
<script>
|
|
tailwind.config = {
|
|
theme: {
|
|
extend: {
|
|
colors: {
|
|
brand: "#714B67",
|
|
"brand-dark": "#4a3c5a",
|
|
accent: "#FF6D5A",
|
|
dark: "#1f1f2e",
|
|
},
|
|
fontFamily: {
|
|
sans: [
|
|
"Inter",
|
|
"system-ui",
|
|
"-apple-system",
|
|
"sans-serif",
|
|
],
|
|
},
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style>
|
|
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap");
|
|
.gradient-hero {
|
|
background: linear-gradient(135deg, #1f1f2e 0%, #2d1f3d 100%);
|
|
}
|
|
.module-card {
|
|
transition:
|
|
transform 0.25s ease,
|
|
box-shadow 0.25s ease;
|
|
display: block;
|
|
text-decoration: none;
|
|
color: inherit;
|
|
}
|
|
.module-card:hover {
|
|
transform: translateY(-6px);
|
|
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.12);
|
|
}
|
|
.btn-brand {
|
|
background: linear-gradient(135deg, #714b67 0%, #5a3d52 100%);
|
|
transition: all 0.25s ease;
|
|
}
|
|
.btn-brand:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 10px 20px rgba(113, 75, 103, 0.3);
|
|
}
|
|
.btn-accent {
|
|
background: linear-gradient(135deg, #ff6d5a 0%, #ff5242 100%);
|
|
transition: all 0.25s ease;
|
|
}
|
|
.btn-accent:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 10px 20px rgba(255, 109, 90, 0.3);
|
|
}
|
|
.faq-answer {
|
|
display: none;
|
|
}
|
|
.faq-item.open .faq-answer {
|
|
display: block;
|
|
}
|
|
.faq-icon {
|
|
transition: transform 0.2s ease;
|
|
}
|
|
.faq-item.open .faq-icon {
|
|
transform: rotate(45deg);
|
|
}
|
|
</style>
|
|
</head>
|
|
<body class="bg-white text-gray-800 font-sans">
|
|
<!-- Navigation -->
|
|
<nav class="bg-white shadow-sm sticky top-0 z-50">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="flex justify-between h-16">
|
|
<div class="flex items-center">
|
|
<span class="text-2xl font-bold text-brand"
|
|
>ODOO4<span class="text-accent"
|
|
>projects</span
|
|
></span
|
|
>
|
|
</div>
|
|
<div class="hidden md:flex items-center space-x-8">
|
|
<a
|
|
href="#modules"
|
|
class="text-gray-600 hover:text-brand transition-colors text-sm font-medium"
|
|
>Modules</a
|
|
>
|
|
|
|
<a
|
|
href="#faq"
|
|
class="text-gray-600 hover:text-brand transition-colors text-sm font-medium"
|
|
>FAQ</a
|
|
>
|
|
<a
|
|
href="#trial"
|
|
class="text-gray-600 hover:text-brand transition-colors text-sm font-medium"
|
|
>Try Free</a
|
|
>
|
|
<a
|
|
href="https://odoo4projects.com"
|
|
class="text-gray-600 hover:text-brand transition-colors text-sm font-medium"
|
|
>Main Site</a
|
|
>
|
|
</div>
|
|
<div class="md:hidden flex items-center">
|
|
<button
|
|
id="mobile-menu-button"
|
|
class="text-gray-600 hover:text-brand"
|
|
>
|
|
<i class="fas fa-bars text-xl"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div
|
|
id="mobile-menu"
|
|
class="hidden md:hidden bg-white border-t px-4 py-3 space-y-3"
|
|
>
|
|
<a
|
|
href="#modules"
|
|
class="block text-gray-600 hover:text-brand text-sm"
|
|
>Modules</a
|
|
>
|
|
|
|
<a
|
|
href="#faq"
|
|
class="block text-gray-600 hover:text-brand text-sm"
|
|
>FAQ</a
|
|
>
|
|
<a
|
|
href="#trial"
|
|
class="block text-gray-600 hover:text-brand text-sm"
|
|
>Try Free</a
|
|
>
|
|
<a
|
|
href="https://odoo4projects.com"
|
|
class="block text-gray-600 hover:text-brand text-sm"
|
|
>Main Site</a
|
|
>
|
|
</div>
|
|
</nav>
|
|
|
|
<!-- Hero -->
|
|
<section class="gradient-hero text-white py-24 md:py-36">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="max-w-3xl mx-auto text-center">
|
|
<div class="inline-flex items-center gap-2 mb-5">
|
|
<span
|
|
class="text-xs font-semibold tracking-widest uppercase text-purple-300 mr-1"
|
|
>Works with Odoo</span
|
|
>
|
|
<span
|
|
class="bg-white/10 border border-white/20 text-white text-xs font-bold px-2.5 py-1 rounded-full"
|
|
>v17</span
|
|
>
|
|
<span
|
|
class="bg-white/10 border border-white/20 text-white text-xs font-bold px-2.5 py-1 rounded-full"
|
|
>v18</span
|
|
>
|
|
<span
|
|
class="bg-purple-500/40 border border-purple-400/40 text-purple-200 text-xs font-bold px-2.5 py-1 rounded-full"
|
|
>v19</span
|
|
>
|
|
</div>
|
|
<h1
|
|
class="text-4xl md:text-5xl lg:text-6xl font-bold leading-tight mb-6"
|
|
>
|
|
Connect Odoo to
|
|
<span class="text-accent">n8n</span> & AI — without
|
|
the custom code
|
|
</h1>
|
|
<p class="text-xl text-gray-300 mb-10 leading-relaxed">
|
|
Five production-ready modules that add REST APIs,
|
|
automation hooks and workflow tools to Odoo. One-time
|
|
purchase, no subscriptions.
|
|
</p>
|
|
<div class="flex flex-col sm:flex-row gap-4 justify-center">
|
|
<a
|
|
href="#modules"
|
|
class="btn-accent text-white px-8 py-4 rounded-xl font-semibold text-lg text-center"
|
|
>
|
|
See the Modules
|
|
</a>
|
|
<a
|
|
href="#trial"
|
|
class="bg-white/10 hover:bg-white/20 text-white px-8 py-4 rounded-xl font-semibold text-lg text-center transition-colors border border-white/20"
|
|
>
|
|
Try Free on Our Hosting
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Value props -->
|
|
<section class="py-16 bg-gray-50">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="grid md:grid-cols-3 gap-8">
|
|
<div class="bg-white rounded-2xl p-8 shadow-sm">
|
|
<div
|
|
class="w-12 h-12 bg-brand/10 rounded-xl flex items-center justify-center text-brand text-xl mb-5"
|
|
>
|
|
<i class="fas fa-plug"></i>
|
|
</div>
|
|
<h3 class="text-lg font-semibold text-dark mb-2">
|
|
Zero-session REST APIs
|
|
</h3>
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
Call Odoo from n8n, scripts or dashboards using API
|
|
keys or per-query tokens — no browser session
|
|
required.
|
|
</p>
|
|
</div>
|
|
<div class="bg-white rounded-2xl p-8 shadow-sm">
|
|
<div
|
|
class="w-12 h-12 bg-accent/10 rounded-xl flex items-center justify-center text-accent text-xl mb-5"
|
|
>
|
|
<i class="fas fa-robot"></i>
|
|
</div>
|
|
<h3 class="text-lg font-semibold text-dark mb-2">
|
|
n8n-ready out of the box
|
|
</h3>
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
Every endpoint is designed to drop straight into an
|
|
n8n HTTP Request node. No wrapper code, no custom
|
|
nodes.
|
|
</p>
|
|
</div>
|
|
<div class="bg-white rounded-2xl p-8 shadow-sm">
|
|
<div
|
|
class="w-12 h-12 bg-green-500/10 rounded-xl flex items-center justify-center text-green-600 text-xl mb-5"
|
|
>
|
|
<i class="fas fa-shield-alt"></i>
|
|
</div>
|
|
<h3 class="text-lg font-semibold text-dark mb-2">
|
|
Buy once, yours forever
|
|
</h3>
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
One-time purchase, no subscription. Includes DE
|
|
& ES translations and future updates for that
|
|
Odoo version.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Modules -->
|
|
<section id="modules" class="py-20">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="text-center mb-14">
|
|
<h2 class="text-3xl md:text-4xl font-bold text-dark mb-4">
|
|
The Modules
|
|
</h2>
|
|
<p class="text-lg text-gray-500 max-w-2xl mx-auto">
|
|
Each module solves one specific problem. Buy only what
|
|
you need — directly in the Odoo App Store.
|
|
</p>
|
|
</div>
|
|
|
|
<!-- BI Queries -->
|
|
<a
|
|
href="https://apps.odoo.com/apps/modules/19.0/o4p_n8n_bi"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
class="module-card bg-white rounded-2xl shadow-md overflow-hidden mb-10 border border-gray-100"
|
|
>
|
|
<div class="md:flex">
|
|
<div
|
|
class="md:w-72 bg-dark p-8 text-white flex-shrink-0 flex flex-col"
|
|
>
|
|
<div class="flex-1">
|
|
<div class="text-4xl mb-5">
|
|
<i class="fas fa-database"></i>
|
|
</div>
|
|
<h3 class="text-xl font-bold mb-1">
|
|
BI Queries
|
|
</h3>
|
|
<p class="text-gray-500 text-xs font-mono mb-4">
|
|
o4p_n8n_bi
|
|
</p>
|
|
<div class="flex gap-1.5 flex-wrap">
|
|
<span
|
|
class="bg-white/10 text-gray-300 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-white/15"
|
|
>v17</span
|
|
>
|
|
<span
|
|
class="bg-white/10 text-gray-300 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-white/15"
|
|
>v18</span
|
|
>
|
|
<span
|
|
class="bg-purple-500/30 text-purple-200 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-purple-400/30"
|
|
>v19</span
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="mt-6 pt-5 border-t border-white/10">
|
|
<div
|
|
class="flex items-center gap-2.5 mb-3 bg-white/5 hover:bg-white/10 transition-colors rounded-xl px-3 py-2.5"
|
|
>
|
|
<div
|
|
class="w-7 h-7 bg-purple-500/20 rounded-lg flex items-center justify-center flex-shrink-0"
|
|
>
|
|
<i
|
|
class="fas fa-store text-purple-400 text-xs"
|
|
></i>
|
|
</div>
|
|
<div class="flex-1 min-w-0">
|
|
<p
|
|
class="text-white text-[11px] font-semibold leading-tight"
|
|
>
|
|
Buy on Odoo App Store
|
|
</p>
|
|
<p class="text-gray-500 text-[10px]">
|
|
Direct purchase · Instant
|
|
download
|
|
</p>
|
|
</div>
|
|
<i
|
|
class="fas fa-external-link-alt text-[9px] text-gray-500 flex-shrink-0"
|
|
></i>
|
|
</div>
|
|
<span
|
|
class="bg-purple-600 text-white text-sm font-bold px-4 py-1.5 rounded-full inline-block"
|
|
>$390 one-time</span
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="p-8 flex-1">
|
|
<h4 class="text-lg font-semibold text-dark mb-3">
|
|
Expose SQL queries as secure JSON endpoints
|
|
</h4>
|
|
<p
|
|
class="text-gray-500 text-sm leading-relaxed mb-5"
|
|
>
|
|
Store named PostgreSQL queries in Odoo, each
|
|
protected by a per-query Bearer token. Call them
|
|
from any BI tool, dashboard or n8n workflow — no
|
|
Odoo session needed.
|
|
</p>
|
|
<div class="grid sm:grid-cols-2 gap-3">
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Per-query Bearer token auth
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Masked token UI with copy button
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Direct PostgreSQL execution
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Structured JSON response
|
|
</div>
|
|
</div>
|
|
<div
|
|
class="mt-5 bg-gray-900 rounded-lg px-4 py-3 font-mono text-xs text-gray-300"
|
|
>
|
|
GET /bi_query/<id>?db=<dbname>
|
|
Authorization: Bearer <token>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
|
|
<!-- Payment Link API -->
|
|
<a
|
|
href="https://apps.odoo.com/apps/modules/19.0/o4p_n8n_payment_link_api"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
class="module-card bg-white rounded-2xl shadow-md overflow-hidden mb-10 border border-gray-100"
|
|
>
|
|
<div class="md:flex">
|
|
<div
|
|
class="md:w-72 bg-dark p-8 text-white flex-shrink-0 flex flex-col"
|
|
>
|
|
<div class="flex-1">
|
|
<div class="text-4xl mb-5">
|
|
<i class="fas fa-link"></i>
|
|
</div>
|
|
<h3 class="text-xl font-bold mb-1">
|
|
Payment Link API
|
|
</h3>
|
|
<p class="text-gray-500 text-xs font-mono mb-4">
|
|
o4p_n8n_payment_link_api
|
|
</p>
|
|
<div class="flex gap-1.5 flex-wrap">
|
|
<span
|
|
class="bg-white/10 text-gray-300 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-white/15"
|
|
>v17</span
|
|
>
|
|
<span
|
|
class="bg-white/10 text-gray-300 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-white/15"
|
|
>v18</span
|
|
>
|
|
<span
|
|
class="bg-purple-500/30 text-purple-200 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-purple-400/30"
|
|
>v19</span
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="mt-6 pt-5 border-t border-white/10">
|
|
<div
|
|
class="flex items-center gap-2.5 mb-3 bg-white/5 hover:bg-white/10 transition-colors rounded-xl px-3 py-2.5"
|
|
>
|
|
<div
|
|
class="w-7 h-7 bg-purple-500/20 rounded-lg flex items-center justify-center flex-shrink-0"
|
|
>
|
|
<i
|
|
class="fas fa-store text-purple-400 text-xs"
|
|
></i>
|
|
</div>
|
|
<div class="flex-1 min-w-0">
|
|
<p
|
|
class="text-white text-[11px] font-semibold leading-tight"
|
|
>
|
|
Buy on Odoo App Store
|
|
</p>
|
|
<p class="text-gray-500 text-[10px]">
|
|
Direct purchase · Instant
|
|
download
|
|
</p>
|
|
</div>
|
|
<i
|
|
class="fas fa-external-link-alt text-[9px] text-gray-500 flex-shrink-0"
|
|
></i>
|
|
</div>
|
|
<span
|
|
class="bg-purple-600 text-white text-sm font-bold px-4 py-1.5 rounded-full inline-block"
|
|
>$249 one-time</span
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="p-8 flex-1">
|
|
<h4 class="text-lg font-semibold text-dark mb-3">
|
|
Generate payment links for invoices & sales
|
|
orders
|
|
</h4>
|
|
<p
|
|
class="text-gray-500 text-sm leading-relaxed mb-5"
|
|
>
|
|
One REST endpoint returns a signed Odoo portal
|
|
link for any invoice or sales order. Send it via
|
|
WhatsApp, SMS or email directly from n8n — the
|
|
customer pays without logging in.
|
|
</p>
|
|
<div class="grid sm:grid-cols-2 gap-3">
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Works for invoices & sales orders
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Odoo API key authentication
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Signed portal links, no login needed
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Single JSON response with link
|
|
</div>
|
|
</div>
|
|
<div
|
|
class="mt-5 bg-gray-900 rounded-lg px-4 py-3 font-mono text-xs text-gray-300"
|
|
>
|
|
POST
|
|
/api/payment-link/<invoice|sale>/<id>
|
|
Authorization: Bearer <api-key>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
|
|
<!-- Website Webhook -->
|
|
<a
|
|
href="https://apps.odoo.com/apps/modules/19.0/o4p_n8n_website_webhook"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
class="module-card bg-white rounded-2xl shadow-md overflow-hidden mb-10 border border-gray-100"
|
|
>
|
|
<div class="md:flex">
|
|
<div
|
|
class="md:w-72 bg-dark p-8 text-white flex-shrink-0 flex flex-col"
|
|
>
|
|
<div class="flex-1">
|
|
<div class="text-4xl mb-5">
|
|
<i class="fas fa-globe"></i>
|
|
</div>
|
|
<h3 class="text-xl font-bold mb-1">
|
|
Website Form Webhook
|
|
</h3>
|
|
<p class="text-gray-500 text-xs font-mono mb-4">
|
|
o4p_n8n_website_webhook
|
|
</p>
|
|
<div class="flex gap-1.5 flex-wrap">
|
|
<span
|
|
class="bg-white/10 text-gray-300 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-white/15"
|
|
>v17</span
|
|
>
|
|
<span
|
|
class="bg-white/10 text-gray-300 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-white/15"
|
|
>v18</span
|
|
>
|
|
<span
|
|
class="bg-purple-500/30 text-purple-200 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-purple-400/30"
|
|
>v19</span
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="mt-6 pt-5 border-t border-white/10">
|
|
<div
|
|
class="flex items-center gap-2.5 mb-3 bg-white/5 hover:bg-white/10 transition-colors rounded-xl px-3 py-2.5"
|
|
>
|
|
<div
|
|
class="w-7 h-7 bg-purple-500/20 rounded-lg flex items-center justify-center flex-shrink-0"
|
|
>
|
|
<i
|
|
class="fas fa-store text-purple-400 text-xs"
|
|
></i>
|
|
</div>
|
|
<div class="flex-1 min-w-0">
|
|
<p
|
|
class="text-white text-[11px] font-semibold leading-tight"
|
|
>
|
|
Buy on Odoo App Store
|
|
</p>
|
|
<p class="text-gray-500 text-[10px]">
|
|
Direct purchase · Instant
|
|
download
|
|
</p>
|
|
</div>
|
|
<i
|
|
class="fas fa-external-link-alt text-[9px] text-gray-500 flex-shrink-0"
|
|
></i>
|
|
</div>
|
|
<span
|
|
class="bg-purple-600 text-white text-sm font-bold px-4 py-1.5 rounded-full inline-block"
|
|
>$95 one-time</span
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="p-8 flex-1">
|
|
<h4 class="text-lg font-semibold text-dark mb-3">
|
|
POST website form submissions to n8n in real
|
|
time
|
|
</h4>
|
|
<p
|
|
class="text-gray-500 text-sm leading-relaxed mb-5"
|
|
>
|
|
Adds a dedicated webhook form to your Odoo
|
|
website — submissions are POSTed to a
|
|
configurable n8n URL instantly, enabling AI spam
|
|
filtering, lead enrichment, custom routing and
|
|
more.
|
|
</p>
|
|
<div class="grid sm:grid-cols-2 gap-3">
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Real-time delivery, no polling
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Dedicated webhook form for n8n
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Optional auth header support
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Zero-code setup via system params
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
|
|
<!-- Invoice Address Edit -->
|
|
<a
|
|
href="https://apps.odoo.com/apps/modules/19.0/o4p_n8n_edit_invoice_address"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
class="module-card bg-white rounded-2xl shadow-md overflow-hidden mb-10 border border-gray-100"
|
|
>
|
|
<div class="md:flex">
|
|
<div
|
|
class="md:w-72 bg-dark p-8 text-white flex-shrink-0 flex flex-col"
|
|
>
|
|
<div class="flex-1">
|
|
<div class="text-4xl mb-5">
|
|
<i class="fas fa-edit"></i>
|
|
</div>
|
|
<h3 class="text-xl font-bold mb-1">
|
|
Invoice Address Edit
|
|
</h3>
|
|
<p class="text-gray-500 text-xs font-mono mb-4">
|
|
o4p_n8n_edit_invoice_address
|
|
</p>
|
|
<div class="flex gap-1.5 flex-wrap">
|
|
<span
|
|
class="bg-white/10 text-gray-300 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-white/15"
|
|
>v17</span
|
|
>
|
|
<span
|
|
class="bg-white/10 text-gray-300 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-white/15"
|
|
>v18</span
|
|
>
|
|
<span
|
|
class="bg-purple-500/30 text-purple-200 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-purple-400/30"
|
|
>v19</span
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="mt-6 pt-5 border-t border-white/10">
|
|
<div
|
|
class="flex items-center gap-2.5 mb-3 bg-white/5 hover:bg-white/10 transition-colors rounded-xl px-3 py-2.5"
|
|
>
|
|
<div
|
|
class="w-7 h-7 bg-purple-500/20 rounded-lg flex items-center justify-center flex-shrink-0"
|
|
>
|
|
<i
|
|
class="fas fa-store text-purple-400 text-xs"
|
|
></i>
|
|
</div>
|
|
<div class="flex-1 min-w-0">
|
|
<p
|
|
class="text-white text-[11px] font-semibold leading-tight"
|
|
>
|
|
Buy on Odoo App Store
|
|
</p>
|
|
<p class="text-gray-500 text-[10px]">
|
|
Direct purchase · Instant
|
|
download
|
|
</p>
|
|
</div>
|
|
<i
|
|
class="fas fa-external-link-alt text-[9px] text-gray-500 flex-shrink-0"
|
|
></i>
|
|
</div>
|
|
<span
|
|
class="bg-purple-600 text-white text-sm font-bold px-4 py-1.5 rounded-full inline-block"
|
|
>$49 one-time</span
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="p-8 flex-1">
|
|
<h4 class="text-lg font-semibold text-dark mb-3">
|
|
Let customers fix their billing address at
|
|
checkout
|
|
</h4>
|
|
<p
|
|
class="text-gray-500 text-sm leading-relaxed mb-5"
|
|
>
|
|
Adds an "Edit Invoice Address" button to the
|
|
portal payment page. Customers can correct name,
|
|
street, city, ZIP and country in one step — no
|
|
support ticket, no back-office involvement.
|
|
</p>
|
|
<div class="grid sm:grid-cols-2 gap-3">
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Inline edit on payment page
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Secure — access token verified
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Saves immediately to partner record
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Zero configuration
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
|
|
<!-- Risk Management -->
|
|
<a
|
|
href="https://apps.odoo.com/apps/modules/19.0/o4p_risk_management"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
class="module-card bg-white rounded-2xl shadow-md overflow-hidden mb-10 border border-gray-100"
|
|
>
|
|
<div class="md:flex">
|
|
<div
|
|
class="md:w-72 bg-dark p-8 text-white flex-shrink-0 flex flex-col"
|
|
>
|
|
<div class="flex-1">
|
|
<div class="text-4xl mb-5">
|
|
<i class="fas fa-shield-alt"></i>
|
|
</div>
|
|
<h3 class="text-xl font-bold mb-1">
|
|
Risk Management
|
|
</h3>
|
|
<p class="text-gray-500 text-xs font-mono mb-4">
|
|
o4p_risk_management
|
|
</p>
|
|
<div class="flex gap-1.5 flex-wrap">
|
|
<span
|
|
class="bg-white/10 text-gray-300 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-white/15"
|
|
>v17</span
|
|
>
|
|
<span
|
|
class="bg-white/10 text-gray-300 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-white/15"
|
|
>v18</span
|
|
>
|
|
<span
|
|
class="bg-purple-500/30 text-purple-200 text-[11px] font-semibold px-2.5 py-0.5 rounded-full border border-purple-400/30"
|
|
>v19</span
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="mt-6 pt-5 border-t border-white/10">
|
|
<div
|
|
class="flex items-center gap-2.5 mb-3 bg-white/5 hover:bg-white/10 transition-colors rounded-xl px-3 py-2.5"
|
|
>
|
|
<div
|
|
class="w-7 h-7 bg-purple-500/20 rounded-lg flex items-center justify-center flex-shrink-0"
|
|
>
|
|
<i
|
|
class="fas fa-store text-purple-400 text-xs"
|
|
></i>
|
|
</div>
|
|
<div class="flex-1 min-w-0">
|
|
<p
|
|
class="text-white text-[11px] font-semibold leading-tight"
|
|
>
|
|
Buy on Odoo App Store
|
|
</p>
|
|
<p class="text-gray-500 text-[10px]">
|
|
Direct purchase · Instant
|
|
download
|
|
</p>
|
|
</div>
|
|
<i
|
|
class="fas fa-external-link-alt text-[9px] text-gray-500 flex-shrink-0"
|
|
></i>
|
|
</div>
|
|
<span
|
|
class="bg-purple-600 text-white text-sm font-bold px-4 py-1.5 rounded-full inline-block"
|
|
>$590 one-time</span
|
|
>
|
|
</div>
|
|
</div>
|
|
<div class="p-8 flex-1">
|
|
<h4 class="text-lg font-semibold text-dark mb-3">
|
|
Risk register with scoring, workflow and Kanban
|
|
</h4>
|
|
<p
|
|
class="text-gray-500 text-sm leading-relaxed mb-5"
|
|
>
|
|
A full organisational risk register inside Odoo.
|
|
Risks move through Identified → Understood
|
|
→ Mitigated → Closed with automatic
|
|
score-based classification (Low / Medium / High
|
|
/ Critical).
|
|
</p>
|
|
<div class="grid sm:grid-cols-2 gap-3">
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Auto-score: (Likelihood × Impact) /
|
|
100
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Four-stage workflow with audit log
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
Mitigation actions sub-list per risk
|
|
</div>
|
|
<div
|
|
class="flex items-start gap-2 text-sm text-gray-600"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-500 mt-0.5"
|
|
></i>
|
|
List and Kanban views
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
</section>
|
|
<!-- FAQ -->
|
|
<section id="faq" class="py-20">
|
|
<div class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="text-center mb-14">
|
|
<div
|
|
class="text-sm font-semibold tracking-widest uppercase text-brand mb-3"
|
|
>
|
|
Got questions?
|
|
</div>
|
|
<h2 class="text-3xl md:text-4xl font-bold text-dark mb-4">
|
|
Frequently Asked Questions
|
|
</h2>
|
|
<p class="text-lg text-gray-500 max-w-xl mx-auto">
|
|
Everything you need to know before you buy. Can't find
|
|
an answer?
|
|
<a
|
|
href="https://odoo4projects.com/contactus"
|
|
class="text-brand font-semibold hover:underline"
|
|
>Just ask us.</a
|
|
>
|
|
</p>
|
|
</div>
|
|
|
|
<div class="space-y-3">
|
|
<div
|
|
class="faq-item bg-white border border-gray-200 rounded-2xl overflow-hidden"
|
|
>
|
|
<button
|
|
onclick="toggleFaq(this)"
|
|
class="w-full flex items-center justify-between px-7 py-5 text-left gap-4"
|
|
>
|
|
<span class="font-semibold text-dark text-sm"
|
|
>Which Odoo versions are supported?</span
|
|
>
|
|
<i
|
|
class="fas fa-plus faq-icon text-brand text-sm flex-shrink-0"
|
|
></i>
|
|
</button>
|
|
<div class="faq-answer px-7 pb-6">
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
All modules are available for Odoo
|
|
<strong class="text-dark"
|
|
>v17, v18 and v19</strong
|
|
>. When you purchase on the Odoo App Store,
|
|
select the version that matches your
|
|
installation. Each Odoo version is sold
|
|
separately. We test on both Community and
|
|
Enterprise editions.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
class="faq-item bg-white border border-gray-200 rounded-2xl overflow-hidden"
|
|
>
|
|
<button
|
|
onclick="toggleFaq(this)"
|
|
class="w-full flex items-center justify-between px-7 py-5 text-left gap-4"
|
|
>
|
|
<span class="font-semibold text-dark text-sm"
|
|
>Do these modules work with self-hosted
|
|
Odoo?</span
|
|
>
|
|
<i
|
|
class="fas fa-plus faq-icon text-brand text-sm flex-shrink-0"
|
|
></i>
|
|
</button>
|
|
<div class="faq-answer px-7 pb-6">
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
Yes — self-hosted (on-premise or VPS) is the
|
|
primary use case. You install them like any
|
|
other Odoo addon. They also work on Odoo.sh.
|
|
<strong class="text-dark"
|
|
>Odoo Online (odoo.com SaaS)</strong
|
|
>
|
|
does not allow third-party custom modules, so
|
|
those installations are not supported.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
class="faq-item bg-white border border-gray-200 rounded-2xl overflow-hidden"
|
|
>
|
|
<button
|
|
onclick="toggleFaq(this)"
|
|
class="w-full flex items-center justify-between px-7 py-5 text-left gap-4"
|
|
>
|
|
<span class="font-semibold text-dark text-sm"
|
|
>Do I need n8n to use these modules?</span
|
|
>
|
|
<i
|
|
class="fas fa-plus faq-icon text-brand text-sm flex-shrink-0"
|
|
></i>
|
|
</button>
|
|
<div class="faq-answer px-7 pb-6">
|
|
<p
|
|
class="text-gray-500 text-sm leading-relaxed mb-3"
|
|
>
|
|
None of these modules require n8n specifically.
|
|
<strong class="text-dark">BI Queries</strong>,
|
|
<strong class="text-dark"
|
|
>Payment Link API</strong
|
|
>
|
|
and
|
|
<strong class="text-dark"
|
|
>Invoice Address Edit</strong
|
|
>
|
|
expose standard REST endpoints that work with
|
|
any HTTP client — curl, Postman, Make, Zapier,
|
|
or anything else you already use.
|
|
<strong class="text-dark"
|
|
>Website Form Webhook</strong
|
|
>
|
|
POSTs to any webhook URL, so any automation
|
|
platform can receive submissions.
|
|
</p>
|
|
<p
|
|
class="text-gray-500 text-sm leading-relaxed mb-3"
|
|
>
|
|
That said, n8n is what we actually use and
|
|
recommend. Every endpoint is designed to drop
|
|
straight into an n8n HTTP Request node — but
|
|
you're never locked in.
|
|
</p>
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
<strong class="text-dark"
|
|
>Risk Management</strong
|
|
>
|
|
is a different category entirely — it's a
|
|
standalone Odoo feature with no external
|
|
dependency of any kind.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
class="faq-item bg-white border border-gray-200 rounded-2xl overflow-hidden"
|
|
>
|
|
<button
|
|
onclick="toggleFaq(this)"
|
|
class="w-full flex items-center justify-between px-7 py-5 text-left gap-4"
|
|
>
|
|
<span class="font-semibold text-dark text-sm"
|
|
>Is this really a one-time payment? No hidden
|
|
fees?</span
|
|
>
|
|
<i
|
|
class="fas fa-plus faq-icon text-brand text-sm flex-shrink-0"
|
|
></i>
|
|
</button>
|
|
<div class="faq-answer px-7 pb-6">
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
Correct. You pay once per module per Odoo
|
|
version, through the Odoo App Store. No
|
|
subscription, no annual renewal, no per-seat
|
|
fee. Bugfix and compatibility updates within the
|
|
same Odoo version line are included. Upgrading
|
|
to a new major Odoo version (e.g. v18 →
|
|
v19) requires a new purchase for the new version
|
|
line.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
class="faq-item bg-white border border-gray-200 rounded-2xl overflow-hidden"
|
|
>
|
|
<button
|
|
onclick="toggleFaq(this)"
|
|
class="w-full flex items-center justify-between px-7 py-5 text-left gap-4"
|
|
>
|
|
<span class="font-semibold text-dark text-sm"
|
|
>Can I try a module before purchasing?</span
|
|
>
|
|
<i
|
|
class="fas fa-plus faq-icon text-brand text-sm flex-shrink-0"
|
|
></i>
|
|
</button>
|
|
<div class="faq-answer px-7 pb-6">
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
Yes. We host Odoo for businesses of all sizes,
|
|
and every hosting plan includes all five modules
|
|
at no additional cost. Start a free trial via
|
|
the form below, explore everything in a live
|
|
environment, and only purchase from the App
|
|
Store if you'd rather run them on your own
|
|
server.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
class="faq-item bg-white border border-gray-200 rounded-2xl overflow-hidden"
|
|
>
|
|
<button
|
|
onclick="toggleFaq(this)"
|
|
class="w-full flex items-center justify-between px-7 py-5 text-left gap-4"
|
|
>
|
|
<span class="font-semibold text-dark text-sm"
|
|
>Do you offer installation or setup
|
|
support?</span
|
|
>
|
|
<i
|
|
class="fas fa-plus faq-icon text-brand text-sm flex-shrink-0"
|
|
></i>
|
|
</button>
|
|
<div class="faq-answer px-7 pb-6">
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
Yes. As Odoo consultants, implementation is
|
|
exactly what we do. If you need help installing
|
|
a module, designing your n8n workflow, or
|
|
building a complete automation stack,
|
|
<a
|
|
href="https://odoo4projects.com/contactus"
|
|
class="text-brand font-semibold hover:underline"
|
|
>get in touch</a
|
|
>. We offer fixed-scope setup packages as well
|
|
as ongoing consulting engagements.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
class="faq-item bg-white border border-gray-200 rounded-2xl overflow-hidden"
|
|
>
|
|
<button
|
|
onclick="toggleFaq(this)"
|
|
class="w-full flex items-center justify-between px-7 py-5 text-left gap-4"
|
|
>
|
|
<span class="font-semibold text-dark text-sm"
|
|
>What languages are included?</span
|
|
>
|
|
<i
|
|
class="fas fa-plus faq-icon text-brand text-sm flex-shrink-0"
|
|
></i>
|
|
</button>
|
|
<div class="faq-answer px-7 pb-6">
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
All modules ship with
|
|
<strong class="text-dark">English</strong>,
|
|
<strong class="text-dark">German (DE)</strong>
|
|
and
|
|
<strong class="text-dark">Spanish (ES)</strong>
|
|
translations included. You can add further
|
|
languages at any time via the standard Odoo
|
|
translation mechanism in the backend.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
class="faq-item bg-white border border-gray-200 rounded-2xl overflow-hidden"
|
|
>
|
|
<button
|
|
onclick="toggleFaq(this)"
|
|
class="w-full flex items-center justify-between px-7 py-5 text-left gap-4"
|
|
>
|
|
<span class="font-semibold text-dark text-sm"
|
|
>What if a module doesn't work for my
|
|
setup?</span
|
|
>
|
|
<i
|
|
class="fas fa-plus faq-icon text-brand text-sm flex-shrink-0"
|
|
></i>
|
|
</button>
|
|
<div class="faq-answer px-7 pb-6">
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
Purchases are handled through the Odoo App
|
|
Store, so their refund policy applies. That said
|
|
— we actively want the modules to work for you.
|
|
If you hit a compatibility issue or something
|
|
isn't behaving as documented,
|
|
<a
|
|
href="https://odoo4projects.com/contactus"
|
|
class="text-brand font-semibold hover:underline"
|
|
>contact us first</a
|
|
>. In most cases we can resolve it quickly. We'd
|
|
rather fix the problem than issue a refund.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
class="faq-item bg-white border border-gray-200 rounded-2xl overflow-hidden"
|
|
>
|
|
<button
|
|
onclick="toggleFaq(this)"
|
|
class="w-full flex items-center justify-between px-7 py-5 text-left gap-4"
|
|
>
|
|
<span class="font-semibold text-dark text-sm"
|
|
>Can I buy all five modules as a bundle?</span
|
|
>
|
|
<i
|
|
class="fas fa-plus faq-icon text-brand text-sm flex-shrink-0"
|
|
></i>
|
|
</button>
|
|
<div class="faq-answer px-7 pb-6">
|
|
<p class="text-gray-500 text-sm leading-relaxed">
|
|
There's no bundle in the App Store — each module
|
|
is purchased individually so you only pay for
|
|
what you actually need. If you'd like a volume
|
|
discount for buying multiple modules,
|
|
<a
|
|
href="https://odoo4projects.com/contactus"
|
|
class="text-brand font-semibold hover:underline"
|
|
>reach out to us directly</a
|
|
>
|
|
and we'll sort something out.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Try Before You Buy -->
|
|
<section id="trial" class="py-0 overflow-hidden">
|
|
<div class="md:flex min-h-[560px]">
|
|
<!-- Left: pitch -->
|
|
<div
|
|
class="md:w-1/2 bg-gradient-to-br from-dark via-[#2d1f3d] to-brand-dark flex flex-col justify-center px-10 py-16 md:px-16 text-white"
|
|
>
|
|
<div
|
|
class="text-xs font-bold tracking-widest uppercase text-purple-300 mb-4"
|
|
>
|
|
4-Week Free Trial
|
|
</div>
|
|
<h2
|
|
class="text-3xl md:text-4xl font-bold leading-tight mb-5"
|
|
>
|
|
Try it live before<br />you spend a cent.
|
|
</h2>
|
|
<p class="text-gray-300 text-sm leading-relaxed mb-8">
|
|
We host Odoo for businesses of all sizes. Every plan
|
|
ships with
|
|
<strong class="text-white"
|
|
>all five modules pre-installed</strong
|
|
>
|
|
— no setup, no credit card, no commitment.
|
|
</p>
|
|
<ul class="space-y-3 mb-8">
|
|
<li
|
|
class="flex items-center gap-3 text-sm text-gray-200"
|
|
>
|
|
<span
|
|
class="w-6 h-6 rounded-full bg-green-500/20 border border-green-400/30 flex items-center justify-center flex-shrink-0"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-400 text-[10px]"
|
|
></i>
|
|
</span>
|
|
All 5 modules active from day one
|
|
</li>
|
|
<li
|
|
class="flex items-center gap-3 text-sm text-gray-200"
|
|
>
|
|
<span
|
|
class="w-6 h-6 rounded-full bg-green-500/20 border border-green-400/30 flex items-center justify-center flex-shrink-0"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-400 text-[10px]"
|
|
></i>
|
|
</span>
|
|
Managed hosting — we handle updates & backups
|
|
</li>
|
|
<li
|
|
class="flex items-center gap-3 text-sm text-gray-200"
|
|
>
|
|
<span
|
|
class="w-6 h-6 rounded-full bg-green-500/20 border border-green-400/30 flex items-center justify-center flex-shrink-0"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-400 text-[10px]"
|
|
></i>
|
|
</span>
|
|
Full Odoo or n8n instance, not a sandbox
|
|
</li>
|
|
<li
|
|
class="flex items-center gap-3 text-sm text-gray-200"
|
|
>
|
|
<span
|
|
class="w-6 h-6 rounded-full bg-green-500/20 border border-green-400/30 flex items-center justify-center flex-shrink-0"
|
|
>
|
|
<i
|
|
class="fas fa-check text-green-400 text-[10px]"
|
|
></i>
|
|
</span>
|
|
4 weeks free, cancel or keep — your call
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<!-- Right: form -->
|
|
<div
|
|
class="md:w-1/2 bg-white flex flex-col justify-center px-10 py-16 md:px-16"
|
|
>
|
|
<h3 class="text-xl font-bold text-dark mb-1">
|
|
Start your free trial
|
|
</h3>
|
|
<p class="text-gray-400 text-sm mb-8">
|
|
No credit card required. Up and running in minutes.
|
|
</p>
|
|
|
|
<form id="trial-form" class="space-y-6" novalidate>
|
|
<input
|
|
type="hidden"
|
|
name="affiliate"
|
|
id="trial-affiliate"
|
|
value="apps"
|
|
/>
|
|
|
|
<!-- Product -->
|
|
<div>
|
|
<label
|
|
class="block text-xs font-semibold text-gray-500 uppercase tracking-wider mb-3"
|
|
>What do you need?</label
|
|
>
|
|
<div class="grid grid-cols-2 gap-3">
|
|
<label
|
|
id="opt-odoo"
|
|
class="trial-option flex items-center gap-3 border-2 border-brand rounded-xl px-4 py-3.5 cursor-pointer bg-brand/5 transition-all"
|
|
>
|
|
<input
|
|
type="radio"
|
|
name="product"
|
|
value="ODOO"
|
|
class="sr-only"
|
|
checked
|
|
/>
|
|
<span
|
|
class="w-8 h-8 rounded-lg bg-brand/10 flex items-center justify-center flex-shrink-0"
|
|
>
|
|
<i
|
|
class="fas fa-cubes text-brand text-sm"
|
|
></i>
|
|
</span>
|
|
<div>
|
|
<p
|
|
class="text-sm font-semibold text-dark"
|
|
>
|
|
Odoo
|
|
</p>
|
|
<p class="text-[11px] text-gray-400">
|
|
ERP + modules
|
|
</p>
|
|
</div>
|
|
</label>
|
|
<label
|
|
id="opt-n8n"
|
|
class="trial-option flex items-center gap-3 border-2 border-gray-200 rounded-xl px-4 py-3.5 cursor-pointer hover:border-gray-300 transition-all"
|
|
>
|
|
<input
|
|
type="radio"
|
|
name="product"
|
|
value="N8N"
|
|
class="sr-only"
|
|
/>
|
|
<span
|
|
class="w-8 h-8 rounded-lg bg-gray-100 flex items-center justify-center flex-shrink-0"
|
|
>
|
|
<i
|
|
class="fas fa-project-diagram text-gray-400 text-sm"
|
|
></i>
|
|
</span>
|
|
<div>
|
|
<p
|
|
class="text-sm font-semibold text-dark"
|
|
>
|
|
n8n
|
|
</p>
|
|
<p class="text-[11px] text-gray-400">
|
|
Workflow automation
|
|
</p>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Region -->
|
|
<div>
|
|
<label
|
|
for="trial-location"
|
|
class="block text-xs font-semibold text-gray-500 uppercase tracking-wider mb-2"
|
|
>Hosting region</label
|
|
>
|
|
<div class="relative">
|
|
<select
|
|
id="trial-location"
|
|
name="location"
|
|
class="w-full appearance-none border-2 border-gray-200 rounded-xl px-4 py-3 text-sm text-dark bg-white focus:outline-none focus:border-brand transition-colors pr-10"
|
|
>
|
|
<option value="">Select a region…</option>
|
|
<option value="UK, Manchester">
|
|
🇬🇧 UK — Manchester
|
|
</option>
|
|
<option value="US, Boston">
|
|
🇺🇸 US — Boston
|
|
</option>
|
|
<option value="IN, Mumbai">
|
|
🇮🇳 IN — Mumbai
|
|
</option>
|
|
<option value="BR, Sao Paulo">
|
|
🇧🇷 BR — São Paulo
|
|
</option>
|
|
<option value="NL, Meppel">
|
|
🇳🇱 NL — Meppel
|
|
</option>
|
|
</select>
|
|
<i
|
|
class="fas fa-chevron-down text-gray-400 text-xs absolute right-4 top-1/2 -translate-y-1/2 pointer-events-none"
|
|
></i>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Email -->
|
|
<div>
|
|
<label
|
|
for="trial-email"
|
|
class="block text-xs font-semibold text-gray-500 uppercase tracking-wider mb-2"
|
|
>Work email</label
|
|
>
|
|
<input
|
|
type="email"
|
|
id="trial-email"
|
|
name="email"
|
|
placeholder="you@company.com"
|
|
required
|
|
class="w-full border-2 border-gray-200 rounded-xl px-4 py-3 text-sm text-dark placeholder-gray-300 focus:outline-none focus:border-brand transition-colors"
|
|
/>
|
|
</div>
|
|
|
|
<!-- Submit -->
|
|
<button
|
|
type="submit"
|
|
id="trial-submit"
|
|
class="w-full btn-brand text-white font-bold text-sm rounded-xl px-6 py-4 flex items-center justify-center gap-2 transition-all"
|
|
>
|
|
<i class="fas fa-rocket text-sm"></i>
|
|
<span>Start 4-Week Free Trial</span>
|
|
</button>
|
|
|
|
<p class="text-center text-[11px] text-gray-400">
|
|
By submitting you agree to the
|
|
<a
|
|
href="https://odoo4projects.com/legal"
|
|
class="underline hover:text-gray-600"
|
|
>Terms & Conditions</a
|
|
>
|
|
of ODOO4projects.
|
|
</p>
|
|
</form>
|
|
|
|
<!-- Success state -->
|
|
<div id="trial-success" class="hidden text-center py-6">
|
|
<div
|
|
class="w-16 h-16 bg-green-100 rounded-full flex items-center justify-center mx-auto mb-5"
|
|
>
|
|
<i class="fas fa-check text-green-500 text-2xl"></i>
|
|
</div>
|
|
<h4 class="text-lg font-bold text-dark mb-2">
|
|
You're on the list!
|
|
</h4>
|
|
<p
|
|
id="trial-success-msg"
|
|
class="text-gray-500 text-sm leading-relaxed"
|
|
></p>
|
|
</div>
|
|
|
|
<!-- Error state -->
|
|
<div
|
|
id="trial-error"
|
|
class="hidden mt-4 bg-red-50 border border-red-200 rounded-xl px-5 py-4"
|
|
>
|
|
<p class="text-red-700 text-sm font-medium">
|
|
<i class="fas fa-exclamation-circle mr-2"></i
|
|
>Something went wrong. Please try again or
|
|
<a
|
|
href="https://odoo4projects.com/contactus"
|
|
class="underline"
|
|
>contact us</a
|
|
>.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Footer -->
|
|
<footer class="bg-dark text-white py-12">
|
|
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
<div class="grid md:grid-cols-4 gap-8">
|
|
<div>
|
|
<h3 class="text-xl font-bold mb-4">
|
|
ODOO4<span class="text-accent">projects</span>
|
|
</h3>
|
|
<p class="text-gray-400 text-sm mb-4 leading-relaxed">
|
|
Smart, scalable Odoo solutions combining ERP
|
|
stability with n8n automation and AI.
|
|
</p>
|
|
<div class="flex space-x-4">
|
|
<a
|
|
href="https://odoo4projects.com/website/social/linkedin"
|
|
class="text-gray-400 hover:text-white transition-colors"
|
|
><i class="fab fa-linkedin text-xl"></i
|
|
></a>
|
|
<a
|
|
href="https://odoo4projects.com/website/social/youtube"
|
|
class="text-gray-400 hover:text-white transition-colors"
|
|
><i class="fab fa-youtube text-xl"></i
|
|
></a>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h4
|
|
class="font-semibold mb-4 text-sm uppercase tracking-wider text-gray-400"
|
|
>
|
|
Links
|
|
</h4>
|
|
<ul class="space-y-2 text-sm">
|
|
<li>
|
|
<a
|
|
href="https://odoo4projects.com"
|
|
class="text-gray-400 hover:text-white transition-colors"
|
|
>Home</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="https://odoo4projects.com/support"
|
|
class="text-gray-400 hover:text-white transition-colors"
|
|
>Support</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="https://odoo4projects.com/legal"
|
|
class="text-gray-400 hover:text-white transition-colors"
|
|
>Legal</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="https://odoo4projects.com/contactus"
|
|
class="text-gray-400 hover:text-white transition-colors"
|
|
>Contact</a
|
|
>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div>
|
|
<h4
|
|
class="font-semibold mb-4 text-sm uppercase tracking-wider text-gray-400"
|
|
>
|
|
Services
|
|
</h4>
|
|
<ul class="space-y-2 text-sm">
|
|
<li>
|
|
<a
|
|
href="https://odoo4projects.com/workshops"
|
|
class="text-gray-400 hover:text-white transition-colors"
|
|
>Workshops</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="https://odoo4projects.com/affiliates"
|
|
class="text-gray-400 hover:text-white transition-colors"
|
|
>Affiliates</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<a
|
|
href="https://OD8N.com"
|
|
class="text-gray-400 hover:text-white transition-colors"
|
|
>OD8N Partner</a
|
|
>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div>
|
|
<h4
|
|
class="font-semibold mb-4 text-sm uppercase tracking-wider text-gray-400"
|
|
>
|
|
Contact
|
|
</h4>
|
|
<ul class="space-y-2 text-sm">
|
|
<li>
|
|
<a
|
|
href="https://odoo4projects.com/contactus"
|
|
class="text-gray-400 hover:text-white transition-colors"
|
|
>Contact Form</a
|
|
>
|
|
</li>
|
|
<li>
|
|
<span class="text-gray-400"
|
|
>ODOO4projects LLC</span
|
|
>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div
|
|
class="border-t border-gray-700 mt-8 pt-8 text-center text-gray-500 text-sm"
|
|
>
|
|
<p>© 2026 ODOO4projects LLC. All rights reserved.</p>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
<script>
|
|
// Mobile menu
|
|
const btn = document.getElementById("mobile-menu-button");
|
|
const menu = document.getElementById("mobile-menu");
|
|
btn.addEventListener("click", () =>
|
|
menu.classList.toggle("hidden"),
|
|
);
|
|
menu.querySelectorAll("a").forEach((a) =>
|
|
a.addEventListener("click", () => menu.classList.add("hidden")),
|
|
);
|
|
|
|
// FAQ accordion
|
|
function toggleFaq(btn) {
|
|
const item = btn.closest(".faq-item");
|
|
const isOpen = item.classList.contains("open");
|
|
// Close all
|
|
document
|
|
.querySelectorAll(".faq-item.open")
|
|
.forEach((el) => el.classList.remove("open"));
|
|
// Toggle current
|
|
if (!isOpen) item.classList.add("open");
|
|
}
|
|
|
|
// Trial form: affiliate from URL
|
|
(function () {
|
|
const params = new URLSearchParams(window.location.search);
|
|
const aff = params.get("affiliate");
|
|
if (aff) document.getElementById("trial-affiliate").value = aff;
|
|
})();
|
|
|
|
// Trial form: product toggle UI
|
|
const trialOptions = document.querySelectorAll(".trial-option");
|
|
const productRadios = document.querySelectorAll(
|
|
'input[name="product"]',
|
|
);
|
|
|
|
function updateProductUI() {
|
|
productRadios.forEach(function (radio) {
|
|
const label = radio.closest("label");
|
|
const icon = label.querySelector("span");
|
|
if (radio.checked) {
|
|
label.classList.add("border-brand", "bg-brand/5");
|
|
label.classList.remove(
|
|
"border-gray-200",
|
|
"hover:border-gray-300",
|
|
);
|
|
icon.classList.add("bg-brand/10");
|
|
icon.classList.remove("bg-gray-100");
|
|
icon.querySelector("i").classList.add("text-brand");
|
|
icon.querySelector("i").classList.remove(
|
|
"text-gray-400",
|
|
);
|
|
} else {
|
|
label.classList.remove("border-brand", "bg-brand/5");
|
|
label.classList.add(
|
|
"border-gray-200",
|
|
"hover:border-gray-300",
|
|
);
|
|
icon.classList.remove("bg-brand/10");
|
|
icon.classList.add("bg-gray-100");
|
|
icon.querySelector("i").classList.remove("text-brand");
|
|
icon.querySelector("i").classList.add("text-gray-400");
|
|
}
|
|
});
|
|
}
|
|
|
|
trialOptions.forEach(function (label) {
|
|
label.addEventListener("click", function () {
|
|
const radio = label.querySelector('input[type="radio"]');
|
|
radio.checked = true;
|
|
updateProductUI();
|
|
});
|
|
});
|
|
|
|
// Trial form: submit
|
|
document
|
|
.getElementById("trial-form")
|
|
.addEventListener("submit", async function (e) {
|
|
e.preventDefault();
|
|
|
|
const form = e.target;
|
|
const submitBtn = document.getElementById("trial-submit");
|
|
const errorEl = document.getElementById("trial-error");
|
|
const successEl = document.getElementById("trial-success");
|
|
const successMsg =
|
|
document.getElementById("trial-success-msg");
|
|
|
|
const email = document
|
|
.getElementById("trial-email")
|
|
.value.trim();
|
|
const location =
|
|
document.getElementById("trial-location").value;
|
|
|
|
if (!email || !location) {
|
|
document
|
|
.getElementById("trial-location")
|
|
.classList.toggle("border-red-400", !location);
|
|
document
|
|
.getElementById("trial-email")
|
|
.classList.toggle("border-red-400", !email);
|
|
return;
|
|
}
|
|
|
|
submitBtn.disabled = true;
|
|
submitBtn.innerHTML =
|
|
'<i class="fas fa-spinner fa-spin text-sm"></i><span>Submitting…</span>';
|
|
errorEl.classList.add("hidden");
|
|
|
|
try {
|
|
const formData = new FormData(form);
|
|
const res = await fetch(
|
|
"https://002-001-5dd6e535-4d1c-46bc-9bd9-42ad4bc5f082.odoo4projects.com/webhook/c25169c6-4234-4b47-8e74-612b9539da0a",
|
|
{ method: "POST", body: formData },
|
|
);
|
|
const text = await res.text();
|
|
form.style.display = "none";
|
|
successMsg.textContent = text;
|
|
successEl.classList.remove("hidden");
|
|
} catch (err) {
|
|
submitBtn.disabled = false;
|
|
submitBtn.innerHTML =
|
|
'<i class="fas fa-rocket text-sm"></i><span>Start 4-Week Free Trial</span>';
|
|
errorEl.classList.remove("hidden");
|
|
}
|
|
});
|
|
|
|
|
|
</script>
|
|
|
|
<script
|
|
defer
|
|
data-domain="apps.odoo4projects.com"
|
|
src="https://plausible.odoo4projects.com/js/script.tagged-events.js"
|
|
></script>
|
|
<script>
|
|
window.plausible =
|
|
window.plausible ||
|
|
function () {
|
|
(window.plausible.q = window.plausible.q || []).push(
|
|
arguments,
|
|
);
|
|
};
|
|
</script>
|
|
</body>
|
|
</html>
|