fix(analytics): put the Buy class on the <form> so the goal actually fires

Plausible's click handler walks up from the clicked element and bails out the
moment it meets a <form>, so a plausible-event-name=Buy class on a
<button type="submit"> inside a plain form never fires Buy — the tracker sends
its automatic "Form: Submission" event instead and the goal records nothing.
Measured live on /odoo-erp-automation-bootcamp/ before this change:
{"n":"Form: Submission"}.

- odoo-erp-automation-bootcamp/index.html (3 CTAs): class moved from the
  <button type="submit"> to the enclosing <form>.
- australia.html (2 CTAs): same move.
- de|es/odoo-erp-automation-bootcamp/index.html (3 forms each): the buy forms
  carried no Buy marking at all, so the DE and ES bootcamp sales were invisible
  to the goal. Class added to the <form>.
- odoo/upsell.html: the three .plan-btn buttons drive the same JS buy path and
  were unmarked. A class on a plain <button> (not a form submit) does fire, so
  it was added there and browser-verified. The disabled Trial button is left
  unmarked.

Class attribute only: every button label, every form action and every basket
payload is byte-identical. No CSS or JS rule references the class.

Verified in a real browser (fetch shimmed, tracker's localhost/automation gates
bypassed): EN bootcamp 3/3, australia 2/2, DE 3/3, ES 3/3, upsell 1/1 clicks
each send exactly one {"n":"Buy"} to /api/event and never "Form: Submission".
This commit is contained in:
oliver committed 2026-10-28 22:37:32 +00:00
1 parent 91ce3d9a4f
commit 5f647c055a
5 files changed
+19 -19

No files matched your search

+4 -4
View File
@@ -428,10 +428,10 @@
money in one system, hosted on our own servers in Sydney, Australia. No setup fee. Cancel at any time.
</p>
<div class="hero-actions">
<form method="post" action="https://20.odoo4projects.com/shop/post_basket" target="_blank">
<form method="post" action="https://20.odoo4projects.com/shop/post_basket" target="_blank" class="plausible-event-name=Buy">
<input type="hidden" name="basket" value='[{"product_id":4,"qty":1,"info":"Australia"}]' />
<input type="hidden" name="clear" value="1" />
<button type="submit" class="btn btn-brass btn-lg plausible-event-name=Buy">Get On the Rise — $395 a year</button>
<button type="submit" class="btn btn-brass btn-lg">Get On the Rise — $395 a year</button>
</form>
<a href="odoo-hosting-2027.html" class="btn btn-outline btn-lg">Compare every way to host Odoo</a>
</div>
@@ -721,10 +721,10 @@
<div class="container">
<p class="cmp-lead">Pick a plan, choose Sydney, and your system is live in about five minutes.</p>
<div class="cmp-cta-actions">
<form method="post" action="https://20.odoo4projects.com/shop/post_basket" target="_blank">
<form method="post" action="https://20.odoo4projects.com/shop/post_basket" target="_blank" class="plausible-event-name=Buy">
<input type="hidden" name="basket" value='[{"product_id":4,"qty":1,"info":"Australia"}]' />
<input type="hidden" name="clear" value="1" />
<button type="submit" class="btn btn-brass btn-lg plausible-event-name=Buy">Get On the Rise — $395 a year</button>
<button type="submit" class="btn btn-brass btn-lg">Get On the Rise — $395 a year</button>
</form>
<a href="odoo-hosting-2027.html" class="btn btn-outline btn-lg">Compare every way to host Odoo</a>
</div>