Internal Offers

ConvertInternal — link to offer detail pages within your site.

Basic Usage

Link to an offer page within your site:

::convert-internal{offer-slug="mentorship" location="hero"}
::

This queries the pages collection for a page at /offers/mentorship and uses its title, description, and icon for the button.

Props

PropTypeDefaultDescription
offerSlugstringSlug to resolve from the pages collection
tostringExplicit path (overrides slug resolution)
labelstringExplicit label (overrides content query)
iconstringExplicit icon (overrides content query)
locationstringrequiredLocation identifier for tracking
variant'button' | 'card''button'Display mode
sizeButtonProps['size']'md'Button size
blockbooleanFull-width button
colorButtonProps['color']'primary'Button color
buttonVariantButtonProps['variant']'solid'Button variant
descriptionstringCard description

How Slug Resolution Works

When you pass offerSlug="mentorship":

  1. The component queries the pages collection at path {routing.offers}/mentorship (e.g., /offers/mentorship)
  2. It extracts title, description, and icon from the page frontmatter
  3. These become the button label and card content (unless overridden by explicit props)

The query is lazy and client-only, so it doesn't block initial page render.

Button Variant

::convert-internal{offer-slug="mentorship" location="sidebar" size="lg"}
::

Card Variant

::convert-internal
---
offerSlug: mentorship
location: offers-section
variant: card
description: Weekly 1-on-1 sessions with an experienced founder.
---
::

Explicit Path

Skip the content query entirely by passing to directly:

::convert-internal{to="/offers/mentorship" label="Learn About Mentorship" location="footer"}
::

Event Tracking

Every click fires an offer_click event with {offerSlug}_internal as the target:

{
  "type": "offer_click",
  "target": "mentorship_internal",
  "location": "hero"
}