Placeholders for subscription emails, email sequences, and custom HTML templates.
Placeholders work in custom subscription emails (Project → Emails), price-specific templates, and email sequences. At send time web2wave replaces each {placeholder} with the recipient’s data.
Unknown placeholders are removed from the final email (subject and body).
Project & layout
| Placeholder | Description |
|---|---|
{logo} | Project logo as a ready-made <img> HTML block (linked to your domain) |
{project.title} | Project name |
{project.domain} | Project domain (without https://) |
{project.favicon} | Full URL to the project favicon / logo image |
{project.logo_url} | Alias for {project.favicon} |
{project.support_email} | Support email from project settings |
{project.legal_address} | Legal address from project settings |
{project.hero_image_url} | Hero banner URL in email sequences (AI-generated per email when enabled; empty in manually edited templates unless set in HTML at generation time) |
{download_link} | App / web download link for the recipient (user_id appended when configured) |
{unsubscribe_url} | Plain unsubscribe URL |
{unsubscribe_link} | Unsubscribe URL wrapped in an <a> tag |
User
Available for any identified recipient (lead or subscriber).
| Placeholder | Description |
|---|---|
USER_ID | Recipient’s web2wave user ID (UUID). Used in links; avoid putting the raw UUID in subject lines |
USER.USER_ID | Same as USER_ID |
USER.EMAIL | Recipient email address |
USER_EMAIL | Alias for USER.EMAIL |
USER.PLAN_ID | Stable 6-digit numeric plan ID derived from user_id. Available before purchase in email sequences — use in subjects like Your plan #USER.PLAN_ID is ready or Plan #USER.PLAN_ID expires soon |
User properties (dynamic)
Any property stored on the user (quiz answers, UTM tags, funnel data) is available as:
{user.<property_name>}— e.g.USER.FIRST_NAME,USER.UTM_CAMPAIGN{<property_name>}— legacy short form, e.g.{email},{last_quiz_path},{last_screen_id}
Common examples: USER.EMAIL, {utm_source}, {last_quiz_path}, {last_screen_id}.
Email sequences — CTA & tracking
Used mainly in AI-generated sequence templates:
| Placeholder | Description |
|---|---|
{cta_link} | Primary button URL for an AI-generated sequence step (paywall, quiz, custom URL, or app download). Replaced with the real URL when the draft is saved — use href="{cta_link}" in generated HTML. In manually edited templates, use a full URL or {download_link} instead |
When Add UTM tags to links is enabled on a sequence step, web2wave also appends utm_source, utm_campaign, and user_id to first-party links automatically.
Subscription fields
Populated when the recipient has an active (or past) subscription on the project. Empty placeholders are stripped on send.
| Field | Description |
|---|---|
{subscription.id} | Unique subscription identifier |
{subscription.user_id} | ID of the user who owns the subscription |
{subscription.user_email} | User’s email address |
{subscription.created_at} | Date and time when the subscription was created |
{subscription.updated_at} | Date and time of the last update to the subscription record |
{subscription.payment_system} | ID of the payment system (0 = Stripe, 1 = Paddle, 3 = PayPal, 4 = Primer, 6 = Solidgate) |
{subscription.payment_system_label} | Name of the payment system (Stripe, PayPal, Paddle, etc.) |
{subscription.real_payment} | Indicates if a real payment has been made |
{subscription.pay_system_id} | Subscription or customer identifier in the payment system |
{subscription.project_domain} | Domain of the project where the subscription was created |
{subscription.quiz_id} | ID of the quiz |
{subscription.quiz_name} | Name of the quiz |
{subscription.paywall_id} | ID of the paywall |
{subscription.paywall_name} | Name of the paywall |
{subscription.price_id} | Price / plan external ID |
{subscription.plan_name} | Human-readable plan name |
{subscription.price_label} | Price option label shown on the paywall |
{subscription.price_description} | Price description text |
{subscription.amount} | Subscription amount (as stored on the subscription record) |
{subscription.amount_real} | Amount including discounts |
{subscription.currency} | Currency code |
{subscription.canceled_at} | Date of cancellation (if canceled) |
{subscription.cancel_at_period_end} | Whether the subscription ends at the end of the current paid period |
{subscription.cancel_scheduled} | Yes if cancellation is scheduled at period end while still active |
{subscription.customer} | Customer identifier in the payment system |
{subscription.status} | Current status (active, canceled, trialing, past_due, …) |
{subscription.next_charge_date} | Date of the next scheduled charge |
{subscription.last_charge_date} | Date of the last charge |
{subscription.charges_count} | Total number of charges for this subscription |
{subscription.phases_num} | Number of billing phases on the subscription |
{subscription.total_revenue} | Total revenue in subscription currency |
{subscription.total_revenue_usd} | Total revenue in USD |
{subscription.manage_link} | Link to the customer subscription portal |
{subscription.user_visit_id} | Visit/session identifier (analytics) |
Date formatting
Any subscription date placeholder supports PHP-style format():
| Example | Output style |
|---|---|
{subscription.next_charge_date=format('Y-m-d')} | ISO date — 2026-03-31 |
{subscription.next_charge_date=format('F j, Y')} | Long date — March 31, 2026 |
{subscription.last_charge_date=format('D, M j \a\t H:i')} | Weekday + time — Tue, Mar 31 at 14:05 |
Supported tokens: Y, y, m, n, d, j, M, F, D, l, H, G, i, s, A, a. Escape literal characters with \ (e.g. \a\t for “at”).
USER.PLAN_ID vs {subscription.id}
USER.PLAN_ID vs {subscription.id}USER.PLAN_ID | {subscription.id} | |
|---|---|---|
| Available | Every identified user (including leads) | Only after a subscription exists |
| Format | 6-digit number (e.g. 219282) | Database subscription ID |
| Typical use | Nurture emails before purchase — “Your plan #219282 is ready” | Post-purchase emails — order / subscription reference |
Both can appear in the same template when the user already subscribed; values may differ.
Related pages
- Email settings — domain, SMTP, purchase confirmation template
- Email sequences — triggers, delays, UTM tags, analytics
- Generate email sequences with AI — AI drafts using these placeholders