DEV Community

Hurvin Krezn
Hurvin Krezn

Posted on

Define the event schema before building the landing page

A landing page can look finished while the test underneath it is still vague. The copy may describe a useful template, app, prompt pack, or workflow, but the team may not know which behavior would count as meaningful signal. That is why the event schema should come before the landing page build.

The goal is not to create an enterprise analytics plan. The goal is to name the few actions that matter before you write persuasive copy, connect checkout, or automate fulfillment. If you cannot say what a view, CTA click, signup, checkout, purchase, refund, or complaint means, the page can turn a copied AI income idea into a polished assumption.

This article is a practical pre-build checklist for small product-validation tests. It is educational, not a claim that these events will produce sales, users, or proof of demand.

Start with the validation question

Before the page has sections, buttons, and testimonials, write the question the page is supposed to answer.

Use this block:

Buyer:
Problem:
Claim being copied:
Evidence actually shown:
Weakest assumption:
Event that would count as signal:
Stop condition:
Enter fullscreen mode Exit fullscreen mode

A weak version says, "See if people are interested." A better version says, "See whether budget-conscious solo builders click from the problem explanation to a free audit worksheet after reading the privacy boundary." The second version tells you what to track.

Name events as decisions, not vibes

Good event names are boring and stable. They describe one user action, not your interpretation of that action.

A useful starting set:

  • page_viewed
  • cta_clicked
  • email_signup_submitted
  • checkout_started
  • purchase_completed
  • refund_requested
  • complaint_submitted

Avoid names like lead_warmed, user_validated, or high_intent_visit. Those names hide judgment inside instrumentation. A raw page view is not validation. A social like is not a purchase. A signup is not proof that the product should be built with fulfillment automation.

If the event that matters is a qualified reply, track a qualified reply. If the event that matters is checkout started, track checkout started. If the event that matters is a purchase, do not let traffic or applause replace it.

Define the minimum event properties

Every event should carry enough context to interpret the test later, but not so much that you collect unnecessary personal data.

A lean property set might include:

  • event_name: the stable event name.
  • occurred_at: timestamp generated by the system.
  • page_slug: the tested page or variant.
  • cta_id: the specific button or link clicked.
  • source: where the visit or action came from when known.
  • utm_source, utm_medium, utm_campaign, utm_content: campaign attribution when present.
  • validation_question: short identifier for the hypothesis being tested.
  • consent_state: whether analytics or email consent was granted where relevant.
  • test_version: the version of the page or offer.

Do not collect names, email addresses, message text, payment details, IP addresses, or device fingerprints unless the test genuinely requires them and your privacy practices support that collection.

Keep source attribution honest

Source attribution should explain where the signal came from, not make weak signal look stronger. A click from a personal post, a directory listing, and a cold message are not interchangeable.

Use UTMs consistently:

utm_source=devto
utm_medium=article
utm_campaign=product_validation
utm_content=event_schema_before_landing_page
Enter fullscreen mode Exit fullscreen mode

The utm_content value should identify the specific article, post, or placement. That makes it easier to separate a working message from a working product idea.

If you are collecting ideas before building, a lightweight demand board can keep claims, objections, and source links visible. This walkthrough on how to build a small demand board before you build is a useful companion.

Sample schema for a small test

Here is a simple JSON-style schema you can adapt before implementation:

{
  "event_name": "cta_clicked",
  "occurred_at": "2026-07-15T10:30:00Z",
  "validation_question": "ai_income_audit_interest",
  "page_slug": "ai-income-claim-audit",
  "test_version": "v1",
  "cta_id": "download_free_worksheet",
  "source": "devto",
  "utm_source": "devto",
  "utm_medium": "article",
  "utm_campaign": "product_validation",
  "utm_content": "event_schema_before_landing_page",
  "consent_state": "analytics_allowed"
}
Enter fullscreen mode Exit fullscreen mode

This schema does not prove demand. It only makes the test readable. Later, you can see whether people viewed the page, clicked the call to action, started checkout, completed purchase, requested refunds, or sent complaints as separate events.

Acceptance criteria before publishing

Before the landing page goes live, define acceptance criteria in plain language:

  • Each tracked event has one owner and one definition.
  • Every CTA on the page maps to a cta_id.
  • Page variants map to a test_version.
  • UTMs are preserved through the page and checkout link where possible.
  • Refunds and complaints are tracked separately from purchases.
  • Personally identifying data is excluded unless required.
  • The stop condition is written before results are reviewed.
  • The final decision can only be continue, revise one variable, or stop.

QA checklist for the first page

Run this before sharing the link:

  • Open the page from a clean browser session.
  • Confirm page_viewed fires once per page load.
  • Click each CTA and confirm the correct cta_id fires.
  • Test a link with UTMs and confirm the parameters are recorded.
  • Check that email signup and checkout are separate events.
  • Confirm no private form fields are being sent to analytics.
  • Trigger a test complaint or feedback path if one exists.
  • Export or inspect the event payloads before driving traffic.

QA prevents the worst outcome: running a real test and discovering later that the events were blended, duplicated, or missing.

FAQ

Should I track every interaction?

No. Track the actions tied to the validation question. Extra events can make the dashboard feel useful while making the decision harder.

Is a signup enough validation?

Only if signup was the event you chose in advance. If the risky assumption is willingness to pay, a signup is an earlier signal, not the final answer.

What if I do not have analytics installed yet?

Write the schema anyway. A spreadsheet, server log, or manual review is better than publishing with no definitions.

A small next step

If you want a structured way to inspect an AI income claim before building around it, use the free 20-minute AI income claim audit worksheet. Treat it as a pre-build worksheet, not proof that the idea will work.

Top comments (0)