Pre-Built Templates
Engage ships with 19 Levy Recommended templates covering every common lifecycle moment. They are not loaded automatically - you seed them once from the Templates page, then clone individual templates into your own library to edit and ship.
Navigation
Access templates from Engage > Templates.
How Templates Work
Templates are channel-specific. Each one has:
- A channel (
email/sms/push) - A locale (
en/de/es/fr/pt) - A payload (subject + body for email, text body for SMS, title + body for push)
- A base template ID linking to the Levy Recommended source if it was cloned
Variables resolve at send time. The CAN-SPAM footer is baked into every pre-built email payload.
The 19 Templates
Welcome Series (3 emails over 7 days)
| Template | Channel | Trigger |
|---|---|---|
tpl_welcome_intro | customer.created | |
tpl_how_to_ride | Welcome journey step 2, 48h after signup | |
tpl_promo_first_ride | Welcome journey step 3, 5 days after signup |
The Welcome Series is the highest-leverage journey to enable first. Every new signup gets a polished onboarding sequence with zero ongoing work.
First Ride Congrats (push + email)
| Template | Channel | Trigger |
|---|---|---|
tpl_first_ride_push | push | ride.ended and total_count = 1 |
tpl_first_ride_email | Same as above |
Sent immediately after a rider's first ride. Tone is celebratory and includes a "share your ride" social CTA.
Re-Engagement 30 / 60 / 90 days
| Template | Channel | Trigger |
|---|---|---|
tpl_reengage_30d | last_ride_at ~30 days ago | |
tpl_reengage_60d | last_ride_at ~60 days ago | |
tpl_reengage_90d_email | last_ride_at ~90 days ago | |
tpl_reengage_90d_sms | sms | Backup nudge for 90d lapsed riders with SMS consent |
The 90-day SMS is opt-in only and includes the required STOP keyword footer.
Low Balance Warning
| Template | Channel | Trigger |
|---|---|---|
tpl_low_balance_push | push | wallet.low_balance (when auto_topup_enabled = false) |
tpl_low_balance_email | Same trigger, 4h delay if no top-up after push |
Auto top-up riders are filtered out at journey entry to avoid the bad send.
Promo Code Blast
| Template | Channel | Trigger |
|---|---|---|
tpl_promo_email | Scheduled | |
tpl_promo_sms | sms | Scheduled (SMS consent required) |
Generic promo template - swap the copy and code per campaign.
Post-Violation Educational Nudge
| Template | Channel | Trigger |
|---|---|---|
tpl_violation_nudge | violation.created with severity <= medium |
High-severity violations are excluded - those go through a separate operations workflow, not marketing.
Subscription Renewal Offer
| Template | Channel | Trigger |
|---|---|---|
tpl_renewal_email | subscription.next_renewal_at minus 7d | |
tpl_renewal_push | push | Same trigger |
Score-Tier-Up Congrats
| Template | Channel | Trigger |
|---|---|---|
tpl_score_tier_up_push | push | rider_score.tier_changed (upward only) |
Tier-down events do not fire a send - bad UX.
Force-End Apology
| Template | Channel | Trigger |
|---|---|---|
tpl_force_end_apology | ride.force_ended |
Includes an automatic $1 wallet credit applied at the same time the email goes out. The credit is recorded against the ride in ride_refunds.
Birthday / Anniversary
| Template | Channel | Trigger |
|---|---|---|
tpl_birthday_email | Customer signup anniversary |
Localization
All pre-built templates have English copy out of the box. Engage falls back to English when a locale variant is missing. To add localized variants:
- Clone the template into your library.
- In the clone, change the locale (
de,es,fr, orpt). - Translate the copy.
- Save. The dispatcher will now route German-speaking riders to your
devariant and everyone else toen.
The localized variant inherits its base_template_id from the Levy Recommended source, so updates to the source are tracked.
Variables Used in Pre-Built Templates
Every Levy Recommended template uses a consistent set of variables. If you write your own templates, follow this convention so you can swap in pre-built copy later.
| Variable | Resolves to |
|---|---|
{{customer.first_name | default:"there"}} | Rider's first name |
{{ride.last_at | date:"MMM D"}} | Most recent ride date |
{{wallet.balance | currency}} | Current wallet balance |
{{subaccount.brand_name}} | Your fleet's brand name |
{{subaccount.legal_address}} | Required for CAN-SPAM compliance |
{{unsubscribe.url}} | Per-recipient unsubscribe token URL |
{{preference_center.url}} | Per-recipient preference center URL |
Cloning a Template
- Go to Engage > Templates > Levy Recommended.
- Click any template.
- Click Clone to my library.
- The clone appears in the Yours tab. Edit subject, body, and variables.
- Save.
The clone is independent - edits to the Levy Recommended source do not propagate.
Custom Templates From Scratch
Start a custom template via Engage > Templates > New Template. Channel and locale are required. The payload format is:
Email:
{
"subject": "Your subject here",
"from_name": "{{subaccount.brand_name}}",
"body_html": "<html>...</html>",
"body_text": "Plain text fallback"
}
SMS:
{
"body": "Your message here. Reply STOP to unsubscribe."
}
Push:
{
"title": "Title",
"body": "Body",
"data": { "deeplink": "/wallet" }
}
Seeding the Templates
If your Templates page shows an empty Levy Recommended tab, the seed has not been run.
- Go to Engage > Templates.
- If you have super-admin access, click Seed Levy Recommended Templates.
- The seed is idempotent - running it again will not duplicate templates.
Operators on Pro and Enterprise plans get the seed automatically during initial setup. Contact support if your seed is missing.
Best Practices
- Always clone, never edit Levy Recommended directly. You cannot edit them - that protects you from losing copy in an update - but the clone path is fast.
- Localize incrementally. Start with English for everything, then add the language you have the most riders in.
- Re-clone if Levy updates a template. When Levy ships an improved Welcome Series, the original you cloned does not auto-update. Re-clone to pick up the new copy, then merge your customizations.
- Keep the legal address and unsubscribe variable in the footer. Templates that strip them will fail CAN-SPAM validation at publish time.
Need Help?
For template help, contact support@levyelectric.com.