Chuyển tới nội dung chính

Shortcodes, blocks and emails

Short answer: this is the lookup page for the WaaS building blocks: six shortcodes with every attribute, five editor blocks, the 18 templates on Waas > Settings > Email with their default subjects and tokens, the billing webhook routes and the scheduled jobs. For step-by-step setup, start at Frontend pages or Emails.

Needs: Pro + WaaS

Shortcodes​

ShortcodePluginDefault pageWhat it shows
[grabwp_waas_signup]GrabWP Tenancy WaaS/signup/The signup steps: template, plan, services and checkout.
[grabwp_waas_dashboard]GrabWP Tenancy WaaS/dashboard/The customer dashboard: sites, domains, billing and account.
[grabwp_waas_pricing]GrabWP Tenancy WaaS/pricing/Plan cards, the monthly and yearly toggle, and the comparison table.
[grabwp_waas_templates]GrabWP Tenancy WaaS/templates/The template gallery with search and tag filters.
[grabwp_waas_login]GrabWP Tenancy WaaSAny pageA standalone customer sign-in form.
[grabwp_waas_promo]GrabWP Tenancy DiscountsAny pageA promotion banner or discount code.

[grabwp_waas_login] and [grabwp_waas_dashboard] take no attributes.

Shows active templates. Each card's Get started button opens signup with that template (?template= followed by the template slug).

AttributeDefaultNotes
tagsemptyTag slugs, separated by commas. Only templates with at least one of these tags are shown.
filter-tagsemptyTag group slugs, separated by commas. Those groups show as pill buttons, with All Tags. Empty means no pills.
tags-browseryesno hides the pills, the group dropdowns and the search box.
per-page12Cards per page. 0 shows all and turns off paging.
columns4Cards per row, 1 to 6.

How filters behave:

  • A group listed in filter-tags shows as pills only.
  • Any other group with more than one tag among the shown templates becomes a dropdown whose first option is "All" plus the group name.
  • The search box placeholder is Type to search templates....
  • Pool tags and the tags a visitor picks must all match.
  • There is no category dropdown. Filter with tag groups.
[grabwp_waas_templates]
[grabwp_waas_templates filter-tags="industry"]
[grabwp_waas_templates tags="elementor" per-page="9" columns="3"]
[grabwp_waas_templates tags="featured" tags-browser="no" per-page="0"]
URL parameterNotes
template_tagA tag slug to pre-select, for example /templates/?template_tag=restaurant. Ignored when tags-browser="no". The tag must be among the shown templates.
grabwp_waas_previewA template slug. Shows the template preview instead of the page, for example /?grabwp_waas_preview=el-restaurant-pro. Preview buttons add it; do not put it on the shortcode.

Pricing table: [grabwp_waas_pricing]​

Shows plan cards from your active plans and, if turned on, a Compare plans table whose first column is Benefit. Card buttons open signup with the plan and billing cycle. With no plans, the page says No plans are available yet.

AttributeDefaultNotes
highlightedemptyThe plan ID marked Most popular. Blank or unknown picks a paid plan in the middle of the list.
plansemptyPlan IDs, separated by commas. Blank shows every active plan.
default-cyclemonthlymonthly or yearly. Anything else becomes monthly.
cta-labelemptyThe button text. Blank uses Start for free on a free plan and Get started on a paid one.
show-cardsyesno hides the cards.
show-comparisonyesno hides the comparison table.

The Monthly and Yearly toggle shows when at least one plan has a yearly price. The yearly button can show a saving in percent.

[grabwp_waas_pricing]
[grabwp_waas_pricing highlighted="pro" default-cycle="yearly"]
[grabwp_waas_pricing plans="free,pro" show-comparison="no"]
[grabwp_waas_pricing show-cards="no" show-comparison="yes"]

Signup: [grabwp_waas_signup]​

Shows the signup steps from a preset on Waas > Settings > Signup Flow (see Signup flow). The built-in preset is default (Default). An empty flow, default or an unknown slug uses it.

AttributeDefaultNotes
flowemptyThe preset slug.
label-accountemptyReplaces Create your account.
label-planemptyReplaces Choose a plan.
label-addonsemptyReplaces Optional Services.
label-cycleemptyReplaces Billing Cycle.
label-paymentemptyReplaces Payment Method.
label-otpemptyReplaces Verify your email.
hide-labelsoffHides the short description under each step heading. On values: 1, yes, true, on.
hide-titlesoffHides the heading of each step.
hide-thumbnailoffHides the template thumbnail.

A blank label keeps the preset's label, then the built-in one.

[grabwp_waas_signup]
[grabwp_waas_signup flow="checkout-first"]
[grabwp_waas_signup flow="default" hide-titles="yes" label-plan="Pick a plan"]
  • With no template chosen yet, the form shows a template browser so the visitor can pick one.
  • The signup page tells caches not to store it, because each visit needs a fresh security token. Exclude it from your cache plugin anyway.

Login and dashboard​

  • [grabwp_waas_login] follows Auth Mode on Waas > Settings > General. A signed-in visitor can go on to the dashboard.
  • [grabwp_waas_dashboard] is the customer's screen for their sites, plan and benefits such as domains and backups. Signed-out visitors with WAAS Auth (Email signup) see the sign-in form instead. Adding ?tenant= with a site ID picks one of the customer's own sites.

Blocks​

All five are in the grabwp-waas category. Their controls are listed on Frontend pages.

Block titleBlock nameSame as
WaaS Signupgrabwp-waas/signup[grabwp_waas_signup]
WaaS Dashboardgrabwp-waas/dashboard[grabwp_waas_dashboard]
WaaS Pricinggrabwp-waas/pricing[grabwp_waas_pricing]
WaaS Template Browsergrabwp-waas/template-browser[grabwp_waas_templates]
WaaS Logingrabwp-waas/login[grabwp_waas_login]

Email templates​

Edited under Waas > Settings > Email (see Emails). Required templates cannot be turned off. site_name works in every email; the table lists the other tokens. Write a token in braces, for example {customer_name}.

Every customer email except Verification code also accepts customer_name, customer_email, dashboard_url and login_url. Every admin email accepts tenant_id, tenant_domain, site_url, customer_name, customer_email, plan_name and admin_url.

Customer emails

LabelKeyDefault subjectExtra tokens
WelcomewelcomeWelcome to {site_name} -- Your site is being set uptenant_id, tenant_domain, site_url, admin_url, login_password
Site setup completeprovisioning_complete{site_name} -- Your site setup is completetenant_id, tenant_domain, site_url
Renewal reminderrenewal_reminder{site_name} -- Renew your plan to keep your site activetenant_id, plan_name, days_remaining, due_date
Plan expired (grace period)grace_period_warning{site_name} -- Your plan has expiredtenant_id, plan_name, due_date, grace_days
Site suspendedsuspension_notice{site_name} -- Your site has been suspendedtenant_id, plan_name
Invoice createdinvoice_created{site_name} -- Invoice {invoice_number} for your subscription renewaltenant_id, plan_name, invoice_number, amount, due_date, payment_url
Invoice paidinvoice_paid{site_name} -- Payment received, subscription renewedtenant_id, plan_name, invoice_number, due_date
Free trial startedtrial_started{site_name} -- Your free trial has startedtenant_id, tenant_domain, plan_name, trial_end_date, days_left, upgrade_url
Free trial endingtrial_ending{site_name} -- Your free trial ends in {days_left} day(s)Same as Free trial started
Free trial endedtrial_ended{site_name} -- Your free trial has endedSame as Free trial started
Verification code (required)otp[{site_name}] Your verification code: {otp_code}Only customer_name, customer_email, otp_code, expires_minutes

Admin emails

LabelKeyDefault subjectExtra tokens
New signupnew_signup[{site_name}] New site created: {tenant_domain}None
Provisioning failedprovisioning_failed[{site_name}] Site setup failed for {customer_email}error_message
Payment receivedpayment_received[{site_name}] Payment received from {customer_email}invoice_number, amount
Payment failedpayment_failed[{site_name}] Payment failed or overdue for {tenant_id}None
Subscription cancelledsubscription_cancelled[{site_name}] Subscription cancelled for {tenant_id}None
Tenant suspendedtenant_suspended[{site_name}] Tenant suspended: {tenant_id}None

Page

LabelKeyTitleTokens
Suspended site page (required, HTTP 503)suspended_page{tenant_domain} is temporarily unavailabletenant_domain, suspension_message, dashboard_url

The trial emails exist since WaaS 1.1.22 and the suspended site page since WaaS 1.1.21.

Billing webhook routes​

RouteUsed byNotes
/wp-json/grabwp-waas/v1/webhooks/billing/ plus the provider IDPolar.sh (polar), Stripe (stripe), Sepay (sepay), Xendit (xendit)The address shown as Webhook URL on Waas > Settings > Billing Providers.
/wp-json/grabwp-waas/v1/webhooks/polarPolar.shOlder Polar route, still accepted.

WooCommerce uses no webhook route.

Scheduled jobs​

These run through WordPress scheduled jobs (WP-Cron), so they need a working cron on your server.

HookRunsWhat it does
grabwp_waas_purge_activity_logDailyRemoves activity log rows older than Retention (days).
grabwp_waas_check_expired_subscriptionsDailyRenewal reminders, grace and suspension changes, built-in trial reminders and trial ends.
grabwp_waas_purge_stale_pending_adminsDailyCleans up expired pending admin accounts.
grabwp_waas_sync_polar_subscriptionsTwice a daySyncs subscription status with Polar.sh.
grabwp_waas_subscription_reconcileTwice a dayReconciles subscription states with the payment providers.
grabwp_waas_generate_renewal_invoicesTwice a dayCreates renewal invoices and sends their emails.
grabwp_waas_refresh_storage_usageDailyRefreshes site storage usage numbers.
grabwp_waas_scan_stale_intentsHourlyRe-queues stuck site builds.
grabwp_waas_resume_provisioning_intentOne-offRuns or resumes one site build in the background.
grabwp_waas_tenant_suspend_after_graceOne-offSuspends a cancelled site when its grace period ends.