Demo Brand Demo Brand

General tags

The remaining output tags: dates, currency, links, page SEO fields, component inclusion and forms. Tier-2 tag attributes must always be quoted (either quote form) — an unquoted key=value on a Tier-2 tag is dropped, because by request time the variable maps are long gone. To feed a variable into a Tier-2 tag, let Tier 1 resolve it inside the quotes, as the currency example below does.

{{date}} — per request, never a stale cached year

SourceTier 2 · resolves per request
<p>Bare (ISO 8601): <strong>{{date}}</strong></p>
Rendered

Bare (ISO 8601): 2026-08-23T08:22:25+00:00

With no attributes the format defaults to ISO 8601 (PHP c).

SourceTier 2 · resolves per request
<p>Formatted: <strong>{{date format="l, F j Y"}}</strong></p>
Rendered

Formatted: Sunday, August 23 2026

format= takes any PHP date() format string.

SourceTier 2 · resolves per request
<p>Relative: 30 days from now is <strong>{{date offset="+30 days" format="F d, Y"}}</strong></p>
Rendered

Relative: 30 days from now is September 22, 2026

offset= takes a PHP strtotime() expression ("+30 days", "next monday", "-1 week"). An unparseable offset renders empty with a warning.

{{currency}} — geo-driven symbol + locale formatting

SourceTier 2 · resolves per request
<p>Literal value: <strong>{{currency value="8.00"}}</strong></p>
Rendered

Literal value: $8

Formats per the visitor's geo currency: "$8" (US style, whole numbers lose the decimals) or "8,00€" (EU style, comma decimals, symbol suffix). No geo → USD fallback.

SourceTier 1 Tier 2
<p>From a variable: <strong>{{currency value="{{var.offer_price}}"}}</strong></p>
Rendered

From a variable: $29

The nested Tier-1 tag resolves at publish, so Tier 2 sees a plain quoted literal — this is the canonical way to feed a variable into any Tier-2 attribute.

Links

SourceTier 2 · resolves per request
<a class="demo-btn demo-btn--ghost" href='{{page_url path="/media"}}'>Internal link to /media</a>

{{page_url}} is prefix-aware: if this SITE lived at /keto instead of /, the same tag would render /keto/media. path="/" is the SITE root.

SourceTier 2 · resolves per request
<p>The platform CTA resolves to: <strong>"{{redirect_link}}"</strong></p>
Rendered

The platform CTA resolves to: ""

Takes no attributes. Filled per request from the inbound ?ref= query param that trackers append: visiting this page with ?ref=trcklink.com renders it as https://trcklink.com/click. The value is sanitized to a bare host (invalid/absent → empty string, never raw input) — with no ?ref= the quotes above are empty. Try adding ?ref=trcklink.com to the URL.

SourceTier 1 Tier 2
<a href='{{outbound_link url="{{global.privacy_url}}"}}'>Outbound link to the privacy policy</a>

A direct outbound link with no platform redirect. The nested global resolves at publish; note the quoted attribute.

Page SEO fields — {{page.*}}

SourceTier 1 · resolves at publish
<p>meta_title: <strong>{{page.meta_title}}</strong></p>
<p>meta_description: <strong>{{page.meta_description}}</strong></p>
Rendered

meta_title: General tags — NY Health Labs

meta_description: date, currency, page_url, redirect_link, outbound_link, page.*, component inclusion and forms.

The layout uses these in <head>; they render this page's own SEO fields (which may themselves contain variables — the title here resolves {{global.brand_name}}).

Component inclusion — all four forms

SourceTier 1 · resolves at publish
{{component.demo-cta}}
Rendered

Limited time

Claim offer

No credit card required.

Bare inclusion: every variable falls back through the precedence chain to the schema defaults ("Limited time" / "Claim offer" / "No credit card required.").

SourceTier 1 · resolves at publish
{{component.demo-cta kicker="Inline arg" label="Inline args seed this usage"}}
Rendered

Inline arg

Inline args seed this usage

No credit card required.

Inline args are the top of the precedence chain and also seed the SITE component-variable defaults on first push.

SourceTier 1 · resolves at publish
{{component.demo-cta instance="top"}}
Rendered

Panel value (instance "top")

Get instant access

30-day money back guarantee.

A named instance gets its own independent variable set in the SITE panel — these values are the seeded "top" rows.

SourceTier 1 · resolves at publish
{{component.demo-cta instance="bottom" subtitle="Inline seed on a named instance"}}
Rendered

Panel value (instance "bottom")

Yes, I want in

Inline seed on a named instance

Named instance + inline arg: the inline subtitle beats the "bottom" panel row; kicker/label still come from the panel.

Forms

SourceTier 1 · resolves at publish
<p>The capture endpoint URL: <strong>{{form name="demo-lead"}}</strong></p>
Rendered

The capture endpoint URL: /api/form/demo-lead

Resolves to /api/form/{slug} — point a form's action at it.

Inside a component body, {{form}} (like every page-context tag) is banned — the endpoint rides in through a self variable whose schema default is {{form name="demo-lead"}}, resolved once in page context at expansion time. The demo-form-card body:

<!-- component: demo-form-card -->
<div class="demo-form-card">
  <p class="demo-form-card__title">{{self.title}}</p>
  <form action='{{self.form_endpoint}}' method="post">
    <input type="email" name="email" placeholder="you@example.com" required>
    <button type="submit" class="demo-btn">{{self.button_label}}</button>
  </form>
</div>
SourceTier 1 · resolves at publish
{{component.demo-form-card title="Live form wired via self.form_endpoint"}}
Rendered

Live form wired via self.form_endpoint

The related unquoted-ref shorthand {{form name=self.varname}} (unquoted = Tier-1 variable reference) resolves the slug from a component variable the same way. It is a Tier-1-only affordance — Tier-2 tags never accept unquoted refs.

Coming in Phase 2

Two tags exist in the spec but are not implemented yet — shown escaped only:

SourcePhase 2 · not implemented yet
{{countdown to="2026-12-31"}}

Server-side countdown: PHP injects the target timestamp, JS renders the clock. Until then, the Vue-powered demo-countdown component below is the available alternative.

SourcePhase 2 · not implemented yet
{{random}}
  <h2>Headline variant A</h2>
{{or}}
  <h2>Headline variant B</h2>
{{/random}}

Server-side random variant selection.

Promo ends in

--d --h --m --s