@samva/markup 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/presets.js CHANGED
@@ -7,17 +7,94 @@ const RECOMMENDED_THEME = {
7
7
  radiusPx: { brand: 8 }
8
8
  };
9
9
  const presetCatalog = [
10
+ {
11
+ id: "linear-login-code",
12
+ channel: "email",
13
+ category: "transactional",
14
+ name: "Linear login code",
15
+ description: "Recreate Linear's login code email with an editable magic link, code, and bundled logo.",
16
+ variables: [
17
+ "expiryNotice",
18
+ "homeUrl",
19
+ "loginUrl",
20
+ "productName",
21
+ "validationCode"
22
+ ]
23
+ },
24
+ {
25
+ id: "product-newsletter",
26
+ channel: "email",
27
+ category: "digest",
28
+ name: "Product newsletter",
29
+ description: "A monthly product newsletter with a lead story, mapped secondary stories, a changelog and one action.",
30
+ variables: [
31
+ "changelog",
32
+ "issueMonth",
33
+ "issueNumber",
34
+ "issueUrl",
35
+ "leadImage",
36
+ "leadSummary",
37
+ "leadTitle",
38
+ "leadUrl",
39
+ "preferencesUrl",
40
+ "stories",
41
+ "unsubscribeUrl"
42
+ ]
43
+ },
44
+ {
45
+ id: "vercel-invitation",
46
+ channel: "email",
47
+ category: "transactional",
48
+ name: "Vercel team invitation",
49
+ description: "Recreate Vercel's team invitation with editable source and bundled assets.",
50
+ variables: [
51
+ "inviteFromIp",
52
+ "inviteFromLocation",
53
+ "inviteLink",
54
+ "invitedByEmail",
55
+ "invitedByUsername",
56
+ "teamImage",
57
+ "teamName",
58
+ "userImage",
59
+ "username"
60
+ ]
61
+ },
62
+ {
63
+ id: "order-receipt",
64
+ channel: "email",
65
+ category: "transactional",
66
+ name: "Order receipt",
67
+ description: "Itemized order receipt with product thumbnails, totals, payment summary and shipping address.",
68
+ variables: [
69
+ "customerName",
70
+ "discount",
71
+ "items",
72
+ "orderDate",
73
+ "orderNumber",
74
+ "orderUrl",
75
+ "paymentBrand",
76
+ "paymentLast4",
77
+ "shipping",
78
+ "shippingAddress",
79
+ "subtotal",
80
+ "supportEmail",
81
+ "tax",
82
+ "total"
83
+ ]
84
+ },
10
85
  {
11
86
  id: "welcome",
12
87
  channel: "email",
13
88
  category: "transactional",
14
89
  name: "Welcome",
15
- description: "First email after signup — orient the new user and point them at their dashboard.",
90
+ description: "First email after signup, with a lead illustration and a numbered list of first steps from the input.",
16
91
  variables: [
17
92
  "ctaUrl",
18
93
  "docsUrl",
19
94
  "firstName",
20
- "logoUrl",
95
+ "planNote",
96
+ "steps",
97
+ "supportEmail",
21
98
  "workspace"
22
99
  ]
23
100
  },
@@ -26,11 +103,14 @@ const presetCatalog = [
26
103
  channel: "email",
27
104
  category: "transactional",
28
105
  name: "Email verification",
29
- description: "Confirm a new email address with a one-click button and a fallback code.",
106
+ description: "Confirm a new email address with a one-click button, a fallback code and the request details behind it.",
30
107
  variables: [
31
108
  "email",
109
+ "expiryNotice",
32
110
  "firstName",
33
- "logoUrl",
111
+ "previousEmail",
112
+ "requestDetails",
113
+ "supportEmail",
34
114
  "verificationCode",
35
115
  "verifyUrl",
36
116
  "workspace"
@@ -41,11 +121,13 @@ const presetCatalog = [
41
121
  channel: "email",
42
122
  category: "transactional",
43
123
  name: "One-time passcode",
44
- description: "Deliver a short-lived sign-in or 2FA code with a prominent, copyable value.",
124
+ description: "Deliver a short-lived sign-in code as the only thing on the page, with the request details under it.",
45
125
  variables: [
46
126
  "code",
47
- "expiryMinutes",
48
- "logoUrl",
127
+ "expiryNotice",
128
+ "helpUrl",
129
+ "newDevice",
130
+ "requestDetails",
49
131
  "workspace"
50
132
  ]
51
133
  },
@@ -54,29 +136,15 @@ const presetCatalog = [
54
136
  channel: "email",
55
137
  category: "transactional",
56
138
  name: "Password reset",
57
- description: "Send a secure, expiring reset link with a paste-able fallback URL.",
139
+ description: "Send an expiring reset link with the request details, a paste-able fallback URL and an optional passkey offer.",
58
140
  variables: [
59
- "expiryMinutes",
141
+ "expiryNotice",
60
142
  "firstName",
61
- "logoUrl",
143
+ "passkeyPrompt",
144
+ "requestDetails",
62
145
  "resetUrl",
63
- "workspace"
64
- ]
65
- },
66
- {
67
- id: "receipt",
68
- channel: "email",
69
- category: "transactional",
70
- name: "Receipt",
71
- description: "Confirm a completed payment with an itemized summary and an invoice link.",
72
- variables: [
73
- "firstName",
74
- "invoiceUrl",
75
- "logoUrl",
76
- "orderNumber",
77
- "paidDate",
78
- "paymentMethod",
79
- "total",
146
+ "securityUrl",
147
+ "supportEmail",
80
148
  "workspace"
81
149
  ]
82
150
  },
@@ -85,17 +153,20 @@ const presetCatalog = [
85
153
  channel: "email",
86
154
  category: "transactional",
87
155
  name: "Payment failed",
88
- description: "Alert a customer to a declined charge and prompt them to update billing.",
156
+ description: "Declined-charge notice with the amount due, the card on file, the held order and every charge attempt.",
89
157
  variables: [
90
158
  "amountDue",
91
- "contactUrl",
92
- "firstName",
93
- "logoUrl",
94
- "paymentMethod",
95
- "planName",
96
- "retryDate",
97
- "updatePaymentUrl",
98
- "workspace"
159
+ "attempts",
160
+ "automaticRetry",
161
+ "customerName",
162
+ "declineReason",
163
+ "holdUntil",
164
+ "items",
165
+ "orderNumber",
166
+ "paymentBrand",
167
+ "paymentLast4",
168
+ "supportEmail",
169
+ "updatePaymentUrl"
99
170
  ]
100
171
  },
101
172
  {
@@ -103,16 +174,19 @@ const presetCatalog = [
103
174
  channel: "email",
104
175
  category: "transactional",
105
176
  name: "Shipping update",
106
- description: "Tell a customer their order shipped, with carrier, ETA, and a tracking link.",
177
+ description: "Shipment notice with the carrier, tracking, delivery estimate, the packed items and anything still to come.",
107
178
  variables: [
108
179
  "carrier",
180
+ "customerName",
109
181
  "estimatedDelivery",
110
- "firstName",
111
- "logoUrl",
182
+ "items",
112
183
  "orderNumber",
184
+ "pendingItems",
185
+ "shippedDate",
186
+ "shippingAddress",
187
+ "supportEmail",
113
188
  "trackingNumber",
114
- "trackingUrl",
115
- "workspace"
189
+ "trackingUrl"
116
190
  ]
117
191
  },
118
192
  {
@@ -120,16 +194,19 @@ const presetCatalog = [
120
194
  channel: "email",
121
195
  category: "transactional",
122
196
  name: "Activity notification",
123
- description: "Notify a user that someone acted in their workspace, with a deep link back.",
197
+ description: "Workspace activity notification with the actor, the message quoted in full, recent activity and a deep link back.",
124
198
  variables: [
125
199
  "actionSummary",
200
+ "actorAvatar",
126
201
  "actorName",
127
- "ctaUrl",
128
- "logoUrl",
129
- "notificationBody",
202
+ "attachment",
203
+ "itemTitle",
204
+ "itemUrl",
205
+ "message",
206
+ "otherActivity",
130
207
  "settingsUrl",
131
208
  "timestamp",
132
- "workspace"
209
+ "workspaceName"
133
210
  ]
134
211
  },
135
212
  {
@@ -137,90 +214,39 @@ const presetCatalog = [
137
214
  channel: "email",
138
215
  category: "transactional",
139
216
  name: "Team invite",
140
- description: "Invite someone to collaborate in a workspace with a single accept action.",
217
+ description: "Invite someone into a workspace with one accept action, the inviter's note and the people already there.",
141
218
  variables: [
142
219
  "acceptUrl",
220
+ "expiryNotice",
143
221
  "inviteeEmail",
222
+ "inviterAvatarUrl",
144
223
  "inviterEmail",
145
224
  "inviterName",
146
- "logoUrl",
225
+ "personalNote",
147
226
  "productName",
227
+ "teammates",
148
228
  "workspace"
149
229
  ]
150
230
  },
151
- {
152
- id: "order-delivered",
153
- channel: "email",
154
- category: "transactional",
155
- name: "Order delivered",
156
- description: "Confirm a delivered order with the itemized contents, delivery address, tracking, and a reorder path.",
157
- variables: [
158
- "apparelUrl",
159
- "carrierName",
160
- "gearUrl",
161
- "homeUrl",
162
- "productOneImageUrl",
163
- "productOneName",
164
- "productOneQuantity",
165
- "productOneTotal",
166
- "productOneVariant",
167
- "productThreeImageUrl",
168
- "productThreeName",
169
- "productThreeQuantity",
170
- "productThreeTotal",
171
- "productThreeVariant",
172
- "productTwoImageUrl",
173
- "productTwoName",
174
- "productTwoQuantity",
175
- "productTwoTotal",
176
- "productTwoVariant",
177
- "recipientName",
178
- "shippingAddressLine1",
179
- "shippingCityStateZip",
180
- "shippingCountry",
181
- "shopAllUrl",
182
- "socialFourIconUrl",
183
- "socialFourUrl",
184
- "socialOneIconUrl",
185
- "socialOneUrl",
186
- "socialThreeIconUrl",
187
- "socialThreeUrl",
188
- "socialTwoIconUrl",
189
- "socialTwoUrl",
190
- "trackOrderUrl",
191
- "trackingNumber",
192
- "trackingUrl",
193
- "unsubscribeUrl"
194
- ]
195
- },
196
231
  {
197
232
  id: "data-sharing-review",
198
233
  channel: "email",
199
234
  category: "transactional",
200
235
  name: "Data-sharing review",
201
- description: "Prompt a customer to review a third-party data connection and keep or remove it, with a reference code.",
236
+ description: "Ask a customer to keep or remove a third-party connection, listing every permission it holds.",
202
237
  variables: [
203
- "accountSettingsUrl",
204
- "appDownloadIconUrl",
205
- "appDownloadUrl",
238
+ "connectedServiceIconUrl",
206
239
  "connectedServiceName",
207
- "contactUrl",
208
- "copyrightYear",
209
- "daysSinceConnection",
210
- "fraudCenterUrl",
211
- "fraudHelpUrl",
240
+ "connectedSince",
212
241
  "keepConnectionUrl",
213
- "privacyUrl",
242
+ "lastAccess",
214
243
  "recipientEmail",
215
244
  "referenceCode",
216
245
  "removeConnectionUrl",
217
- "signInIconUrl",
218
- "signInUrl",
219
- "socialFiveIconUrl",
220
- "socialFourIconUrl",
221
- "socialOneIconUrl",
222
- "socialThreeIconUrl",
223
- "socialTwoIconUrl"
246
+ "scopes",
247
+ "securityUrl",
248
+ "settingsUrl",
249
+ "workspace"
224
250
  ]
225
251
  },
226
252
  {
@@ -228,41 +254,15 @@ const presetCatalog = [
228
254
  channel: "email",
229
255
  category: "digest",
230
256
  name: "Weekly digest",
231
- description: "Recap the week's activity as a scannable list of stories with read-more links.",
257
+ description: "A weekly reader digest: mapped stories with their desk and reading time, a most-read list, and an optional audio edition.",
232
258
  variables: [
233
- "dashboardUrl",
234
- "highlightCount",
235
- "logoUrl",
236
- "storyOneSummary",
237
- "storyOneTitle",
238
- "storyOneUrl",
239
- "storyTwoSummary",
240
- "storyTwoTitle",
241
- "storyTwoUrl",
242
- "unsubscribeUrl",
243
- "weekRange",
244
- "workspace"
245
- ]
246
- },
247
- {
248
- id: "newsletter",
249
- channel: "email",
250
- category: "digest",
251
- name: "Newsletter",
252
- description: "An editorial newsletter with a hero story, secondary links, and subscribe controls.",
253
- variables: [
254
- "heroImage",
255
- "issueNumber",
256
- "leadBody",
257
- "leadHeadline",
258
- "leadUrl",
259
- "linkOneTitle",
260
- "linkOneUrl",
261
- "linkTwoTitle",
262
- "linkTwoUrl",
263
- "newsletterName",
264
- "publishDate",
265
- "subscribeUrl",
259
+ "archiveUrl",
260
+ "editionLabel",
261
+ "mostRead",
262
+ "podcast",
263
+ "preferencesUrl",
264
+ "readerName",
265
+ "stories",
266
266
  "unsubscribeUrl"
267
267
  ]
268
268
  },
@@ -271,59 +271,23 @@ const presetCatalog = [
271
271
  channel: "email",
272
272
  category: "digest",
273
273
  name: "Long-form newsletter",
274
- description: "Long-form editorial newsletter with a lead story, sponsor slot, and a reading list.",
274
+ description: "A long-form editorial issue: a byline, an essay that renders from a list of paragraphs, a pull quote, an optional labelled sponsor and a reading list.",
275
275
  variables: [
276
- "advertiseEmailUrl",
277
- "authorAvatarUrl",
278
- "authorProfileUrl",
279
- "bookUrl",
280
- "commentIconUrl",
281
- "commentUrl",
282
- "communityUrl",
283
- "concordStoryUrl",
284
- "founderQuoteUrl",
285
- "heroImageUrl",
286
- "leakStoryUrl",
287
- "likeIconUrl",
288
- "likeUrl",
289
- "marketReportUrl",
290
- "northbeamStoryUrl",
291
- "platformCtaImageUrl",
292
- "podcastCastUrl",
293
- "podcastGenericUrl",
294
- "podcastImageUrl",
295
- "podcastStreamUrl",
296
- "postUrl",
297
- "publishDate",
298
- "quoteOfWeekUrl",
299
- "quoteSourceUrl",
300
- "readInAppIconUrl",
301
- "readInAppUrl",
302
- "reading1Url",
303
- "reading2Url",
304
- "reading3Url",
305
- "reading4Url",
306
- "reading5Url",
307
- "repostIconUrl",
308
- "repostUrl",
309
- "shareIconUrl",
310
- "shareMailIconUrl",
311
- "shareNotesIconUrl",
312
- "shareSocialOneIconUrl",
313
- "shareSocialTwoIconUrl",
314
- "shareUrl",
315
- "sponsorImageUrl",
316
- "sponsorUrl",
317
- "stagnationStoryUrl",
318
- "statOfWeek",
319
- "statStoryUrl",
276
+ "authorAvatar",
277
+ "authorName",
278
+ "authorRole",
279
+ "heroImage",
280
+ "issueLabel",
281
+ "paragraphs",
282
+ "preferencesUrl",
283
+ "pullQuote",
284
+ "readingList",
285
+ "sponsor",
286
+ "standfirst",
287
+ "storyUrl",
320
288
  "subscribeUrl",
321
- "subscriptionPrice",
322
- "tipsEmailUrl",
323
- "unsubscribeUrl",
324
- "upgradeUrl",
325
- "usersStoryUrl",
326
- "valuationStoryUrl"
289
+ "title",
290
+ "unsubscribeUrl"
327
291
  ]
328
292
  },
329
293
  {
@@ -331,60 +295,14 @@ const presetCatalog = [
331
295
  channel: "email",
332
296
  category: "digest",
333
297
  name: "Events roundup",
334
- description: "A dated events digest: a grid of upcoming shows with images, dates, prices, and per-event links.",
298
+ description: "A dated events digest: an optional spotlight billing and a grid of upcoming shows with images, dates, rooms, prices and per-event tickets.",
335
299
  variables: [
336
- "copyrightYear",
337
- "event10Date",
338
- "event10ImageUrl",
339
- "event10Price",
340
- "event10Url",
341
- "event11Date",
342
- "event11ImageUrl",
343
- "event11Price",
344
- "event11Url",
345
- "event1Date",
346
- "event1ImageUrl",
347
- "event1Price",
348
- "event1Url",
349
- "event2Date",
350
- "event2ImageUrl",
351
- "event2Price",
352
- "event2Url",
353
- "event3Date",
354
- "event3ImageUrl",
355
- "event3Price",
356
- "event3Url",
357
- "event4Date",
358
- "event4ImageUrl",
359
- "event4Price",
360
- "event4Url",
361
- "event5Date",
362
- "event5ImageUrl",
363
- "event5Price",
364
- "event5Url",
365
- "event6Date",
366
- "event6ImageUrl",
367
- "event6Price",
368
- "event6Url",
369
- "event7Date",
370
- "event7ImageUrl",
371
- "event7Price",
372
- "event7Url",
373
- "event8Date",
374
- "event8ImageUrl",
375
- "event8Price",
376
- "event8Url",
377
- "event9Date",
378
- "event9ImageUrl",
379
- "event9Price",
380
- "event9Url",
300
+ "calendarUrl",
301
+ "cityName",
302
+ "events",
381
303
  "helpUrl",
382
- "moreEventsUrl",
383
- "socialFourIconUrl",
384
- "socialOneIconUrl",
385
- "socialThreeIconUrl",
386
- "socialTwoIconUrl",
387
- "termsUrl",
304
+ "seasonLabel",
305
+ "spotlight",
388
306
  "unsubscribeUrl"
389
307
  ]
390
308
  },
@@ -393,76 +311,20 @@ const presetCatalog = [
393
311
  channel: "email",
394
312
  category: "digest",
395
313
  name: "Industry news digest",
396
- description: "A dense industry news digest with lead stories, a jobs board, tools index, sponsors, and a workshop.",
314
+ description: "A dense industry brief: an agenda, a lead story with details and analysis, mapped desk stories, an optional labelled sponsor, and tool and job lists.",
397
315
  variables: [
398
- "advertiseUrl",
316
+ "agenda",
399
317
  "audienceSize",
400
- "bastionClaimsUrl",
401
- "bastionDealImageUrl",
402
- "bastionDealUrl",
403
- "bastionLeakUrl",
404
- "bastionReplyingUrl",
405
- "bastionReportedUrl",
406
- "bastionSayingUrl",
407
- "bastionStruckUrl",
408
- "bastionUnveilingUrl",
409
- "copyrightYear",
410
- "feedbackAverageUrl",
411
- "feedbackFailUrl",
412
- "feedbackGreatUrl",
413
- "freeSignupUrl",
414
- "jobGatebenchUrl",
415
- "jobLedgerUrl",
416
- "jobScalebenchUrl",
417
- "jobVaultbridgeUrl",
418
- "jobsIndexUrl",
419
- "latentPrivilegeImageUrl",
420
- "latentPrivilegePublishedUrl",
421
- "latentPrivilegeUrl",
422
- "moreNewsBetaUrl",
423
- "moreNewsComputeUrl",
424
- "moreNewsFlashUrl",
425
- "moreNewsHiredUrl",
426
- "moreNewsMedalUrl",
427
- "moreNewsPoachedUrl",
428
- "moreNewsQuillUrl",
429
- "moreNewsStanceUrl",
430
- "moreNewsUrl",
431
- "playbookTutorialImageUrl",
432
- "playbookTutorialUrl",
433
- "podcastUrl",
434
- "pulsebandAcquiringUrl",
435
- "pulsebandDealImageUrl",
436
- "pulsebandDealUrl",
437
- "pulsebandReviewsUrl",
438
- "readOnlineUrl",
439
- "referralUrl",
440
- "ridgelockCareersUrl",
441
- "ridgelockSponsorImageUrl",
442
- "ridgelockSponsorUrl",
443
- "sealpathCtaUrl",
444
- "sealpathSponsorImageUrl",
445
- "sealpathSponsorUrl",
446
- "signUpUrl",
447
- "socialOneIconUrl",
448
- "socialThreeIconUrl",
449
- "socialTwoIconUrl",
318
+ "editionDate",
319
+ "editionUrl",
320
+ "intro",
321
+ "jobs",
322
+ "lead",
323
+ "sponsor",
450
324
  "sponsorContactUrl",
451
- "termsUrl",
452
- "toolActTwoUrl",
453
- "toolClipcastUrl",
454
- "toolHierarchyUrl",
455
- "toolQuillUrl",
456
- "toolsIndexUrl",
457
- "universityFooterUrl",
458
- "universityUrl",
459
- "unsubscribeUrl",
460
- "workshopDate",
461
- "workshopDay",
462
- "workshopImageUrl",
463
- "workshopRsvpUrl",
464
- "workshopTime",
465
- "workshopUrl"
325
+ "stories",
326
+ "tools",
327
+ "unsubscribeUrl"
466
328
  ]
467
329
  },
468
330
  {
@@ -470,34 +332,17 @@ const presetCatalog = [
470
332
  channel: "email",
471
333
  category: "marketing",
472
334
  name: "Feature announcement",
473
- description: "Announce a new feature with a bold branded header and a link to the changelog.",
335
+ description: "Announce one change with a hero image, highlights from a list, an availability date and a single action.",
474
336
  variables: [
475
- "changelogUrl",
476
- "ctaLabel",
337
+ "availableFrom",
477
338
  "ctaUrl",
478
339
  "featureDescription",
479
- "featureImage",
480
340
  "featureName",
481
341
  "featureTagline",
482
342
  "firstName",
483
- "unsubscribeUrl",
484
- "workspace"
485
- ]
486
- },
487
- {
488
- id: "promo",
489
- channel: "email",
490
- category: "marketing",
491
- name: "Promotion",
492
- description: "Drive a limited-time offer with a highlighted promo code and a shop CTA.",
493
- variables: [
494
- "expiryDate",
495
- "firstName",
496
- "offerHeadline",
497
- "offerSubhead",
498
- "promoCode",
499
- "shopUrl",
500
- "termsUrl",
343
+ "highlights",
344
+ "preferencesUrl",
345
+ "releaseNoteUrl",
501
346
  "unsubscribeUrl"
502
347
  ]
503
348
  },
@@ -506,17 +351,22 @@ const presetCatalog = [
506
351
  channel: "email",
507
352
  category: "marketing",
508
353
  name: "Event invite",
509
- description: "Invite recipients to an event with when/where details and an RSVP button.",
354
+ description: "Invite members to an event with the date, the place, an agenda from a list, and one RSVP action.",
510
355
  variables: [
356
+ "agenda",
357
+ "capacityNote",
511
358
  "declineUrl",
512
359
  "eventAddress",
513
360
  "eventDate",
514
361
  "eventDescription",
515
362
  "eventLocation",
516
363
  "eventName",
364
+ "eventTagline",
517
365
  "eventTime",
518
366
  "firstName",
367
+ "preferencesUrl",
519
368
  "rsvpUrl",
369
+ "travelNote",
520
370
  "unsubscribeUrl"
521
371
  ]
522
372
  },
@@ -525,30 +375,20 @@ const presetCatalog = [
525
375
  channel: "email",
526
376
  category: "marketing",
527
377
  name: "Membership promotion",
528
- description: "Promote a paid membership with a tiered plan comparison, a discount code, and a repeated upgrade CTA.",
378
+ description: "Promote a paid membership with tier cards from a list, a discount code, a deadline, and one join action.",
529
379
  variables: [
530
- "advertiseUrl",
531
- "appDownloadUrl",
532
- "claimOfferUrl",
380
+ "compareUrl",
533
381
  "discountPercent",
534
- "flexibleDatesImageUrl",
535
- "getAlertsUrl",
536
- "offerEndDate",
382
+ "firstName",
383
+ "headline",
384
+ "joinUrl",
385
+ "offerEnds",
537
386
  "preferencesUrl",
538
387
  "promoCode",
539
- "promoCodeUrl",
540
- "socialFiveIconUrl",
541
- "socialFourIconUrl",
542
- "socialOneIconUrl",
543
- "socialThreeIconUrl",
544
- "socialTwoIconUrl",
545
- "specificTripImageUrl",
546
- "summitNowPrice",
547
- "summitWasPrice",
548
- "trailNowPrice",
549
- "trailWasPrice",
550
- "unsubscribeUrl",
551
- "websiteUrl"
388
+ "savingsNote",
389
+ "subhead",
390
+ "tiers",
391
+ "unsubscribeUrl"
552
392
  ]
553
393
  },
554
394
  {
@@ -556,38 +396,24 @@ const presetCatalog = [
556
396
  channel: "email",
557
397
  category: "marketing",
558
398
  name: "Member referral offer",
559
- description: "Invite customers to add members to their account for a limited-time reward, with the full terms.",
399
+ description: "Ask a member to bring people onto their account for a limited-time reward, with the steps and the terms as lists.",
560
400
  variables: [
561
- "accountUrl",
562
- "addMemberUrl",
563
- "addressUrl",
564
- "appIconImageUrl",
565
- "applicationEvalUrl",
566
- "circleFeatureImageUrl",
567
- "coOwnerBonus",
568
- "coOwnerSpendMin",
569
- "copyrightYear",
570
- "creditBuildAge",
571
- "creditReportingUrl",
572
- "customerAgreementUrl",
573
- "heroImageUrl",
574
- "learnCircleUrl",
575
- "learnDailyTideUrl",
576
- "maxBonusAmount",
577
- "maxNewMembers",
578
- "memberRisksUrl",
579
- "minMemberAge",
580
- "offerEndDate",
581
- "offerEndDateFull",
582
- "offerStartDate",
583
- "participantBonus",
584
- "participantSpendMin",
585
- "privacyUrl",
586
- "rewardsFeatureImageUrl",
587
- "signInUrl",
588
- "supportUrl",
401
+ "firstName",
402
+ "headline",
403
+ "maxMembers",
404
+ "maxReward",
405
+ "offerEnds",
406
+ "offerStarts",
407
+ "preferencesUrl",
408
+ "referralCode",
409
+ "referralUrl",
410
+ "reminderNote",
411
+ "rewardPerMember",
412
+ "spendMinimum",
413
+ "steps",
414
+ "subhead",
415
+ "terms",
589
416
  "termsUrl",
590
- "tidePayInfoUrl",
591
417
  "unsubscribeUrl"
592
418
  ]
593
419
  },
@@ -596,48 +422,24 @@ const presetCatalog = [
596
422
  channel: "email",
597
423
  category: "marketing",
598
424
  name: "Catalog sale newsletter",
599
- description: "Announce a new release and run a catalog-wide bundle sale with per-item discount links.",
425
+ description: "Open a catalogue-wide sale with a bundle offer, a product grid from a list, a discount code, and the shop dates.",
600
426
  variables: [
601
427
  "bundleListPrice",
428
+ "bundleName",
602
429
  "bundleSalePrice",
603
430
  "bundleUrl",
604
- "courseUrl",
605
- "discountAdvancedOneUrl",
606
- "discountAdvancedThreeUrl",
607
- "discountAdvancedTwoUrl",
608
- "discountCanvasPlayUrl",
609
- "discountChallengesUrl",
610
- "discountConcurrencyUrl",
611
- "discountDataLayerUrl",
612
- "discountDesktopPathUrl",
613
- "discountInterfaceByExampleUrl",
614
- "discountLegacyInteropUrl",
615
- "discountLiveSeriesUrl",
616
- "discountLivingRoomPathUrl",
617
- "discountMobilePathUrl",
618
- "discountOutsideEditorUrl",
619
- "discountPatternsUrl",
620
- "discountProInterfaceUrl",
621
- "discountProSystemsUrl",
622
- "discountSundayBuildsUrl",
623
- "discountTestingUrl",
624
- "discountWearablesPathUrl",
431
+ "dates",
432
+ "discountCode",
625
433
  "editionLabel",
626
434
  "editionYear",
627
- "eventChicagoUrl",
628
- "eventEnglandUrl",
629
- "eventFranceUrl",
630
- "eventGermanyUrl",
631
- "eventItalyUrl",
632
- "eventSkopjeUrl",
633
- "eventTokyoUrl",
634
- "eventWalesUrl",
635
- "friendBookUrl",
636
- "friendVideoUrl",
637
- "harborcraftUrl",
638
- "podcastEpisodeUrl",
639
- "poweredByUrl",
640
- "sponsorUrl",
435
+ "firstName",
436
+ "headline",
437
+ "intro",
438
+ "items",
439
+ "offerEnds",
440
+ "preferencesUrl",
441
+ "shopUrl",
442
+ "stockNote",
641
443
  "unsubscribeUrl"
642
444
  ]
643
445
  },
@@ -646,18 +448,23 @@ const presetCatalog = [
646
448
  channel: "email",
647
449
  category: "marketing",
648
450
  name: "Limited-time savings",
649
- description: "A focused, time-boxed savings offer with a single enrol action and a countdown of hours remaining.",
451
+ description: "A time-boxed savings offer with the hours remaining, reasons from a list, member quotes, and one claim action.",
650
452
  variables: [
651
- "advocacyLetterUrl",
652
- "enrollUrl",
653
- "essentialsDiscountPercent",
654
- "essentialsOfferUrl",
453
+ "claimUrl",
454
+ "firstName",
455
+ "headline",
655
456
  "hoursRemaining",
656
457
  "listPrice",
657
- "productUrl",
458
+ "offerEnds",
459
+ "postscript",
460
+ "preferencesUrl",
461
+ "promoCode",
462
+ "reasons",
658
463
  "salePrice",
659
464
  "savingsAmount",
660
- "timezoneGuideUrl",
465
+ "subhead",
466
+ "testimonials",
467
+ "timezoneUrl",
661
468
  "unsubscribeUrl"
662
469
  ]
663
470
  },
@@ -666,46 +473,24 @@ const presetCatalog = [
666
473
  channel: "email",
667
474
  category: "marketing",
668
475
  name: "Rewards milestone",
669
- description: "Drive engagement with a milestone reward program: complete steps, unlock perks, and see the reward tiers.",
476
+ description: "Show a member how far through a rewards ladder they are, what the next step unlocks, and what each tier is worth.",
670
477
  variables: [
671
- "accountLastFour",
672
- "airAccidentCover",
673
- "beSecureUrl",
674
- "benefitIconUrl",
675
- "campaignCode",
676
- "continueGuideUrl",
677
- "diningCreditAmount",
678
- "eventTicketCount",
679
- "familyMemberLimit",
680
- "heroBannerImageUrl",
681
- "internetBankingIconUrl",
682
- "internetBankingUrl",
683
- "learnMoreUrl",
684
- "lockerDiscountPercent",
685
- "loungeVisitCount",
686
- "maxRewardAmount",
687
- "milestoneCount",
478
+ "bonusNote",
479
+ "expiresOn",
480
+ "firstName",
481
+ "headline",
688
482
  "milestoneLabel",
689
- "mobileAppIconUrl",
690
- "mobileAppUrl",
691
- "mobileVersionUrl",
692
- "movieTicketCount",
693
- "personalAccidentCover",
694
- "recipientName",
695
- "rewardsCardImageUrl",
696
- "rmSmsKeyword",
697
- "rmSmsPhone",
698
- "rmSmsShortcode",
699
- "secureChatIconUrl",
700
- "secureChatPhone",
701
- "secureChatUrl",
702
- "securityPolicyUrl",
483
+ "nextReward",
484
+ "pointsBalance",
485
+ "preferencesUrl",
486
+ "rewardsUrl",
487
+ "steps",
488
+ "stepsCompleted",
489
+ "stepsTotal",
490
+ "subhead",
703
491
  "termsUrl",
704
- "tollFreePhone",
705
- "unsubscribeUrl",
706
- "webVersionUrl",
707
- "websiteUrl",
708
- "welcomeRewardAmount"
492
+ "tiers",
493
+ "unsubscribeUrl"
709
494
  ]
710
495
  },
711
496
  {
@@ -713,58 +498,22 @@ const presetCatalog = [
713
498
  channel: "email",
714
499
  category: "marketing",
715
500
  name: "Travel rewards promotion",
716
- description: "A rewards-program promotion with bonus tiers, partner discount codes, and a member balance summary.",
501
+ description: "A travel rewards promotion with a member balance, earning tiers from a list, and partner offers.",
717
502
  variables: [
718
- "accountPromptImageUrl",
719
503
  "accountUrl",
720
- "additionalTermsUrl",
721
- "androidAppUrl",
722
- "appDownloadUrl",
723
504
  "bookUrl",
724
- "campaignCode",
725
- "contactUrl",
726
- "copyrightYear",
727
- "couponBonusMiles",
728
- "dealsUrl",
729
- "discountPercent",
730
505
  "firstName",
731
- "heroImageUrl",
732
- "iosAppUrl",
733
- "longBonusMiles",
734
- "longRentalDays",
735
- "maxBonusMiles",
736
- "memberId",
737
- "midBonusMiles",
738
- "midRentalDays",
739
- "mileageBalance",
740
- "offerEndDate",
741
- "offerEndDateShort",
742
- "offerStartDate",
743
- "partnerOneCoupon",
744
- "partnerOneDiscountCode",
745
- "partnerOneDiscountCodeAlt",
746
- "partnerTwoCoupon",
747
- "partnerTwoDiscountCode",
748
- "partnerTwoDiscountCodeAlt",
749
- "partnerTwoDiscountPercent",
506
+ "headline",
507
+ "memberNumber",
508
+ "milesBalance",
509
+ "offerEnds",
510
+ "partners",
750
511
  "preferencesUrl",
751
- "privacyUrl",
752
- "recipientEmail",
753
- "recipientEmailUrl",
754
- "reservationsUrl",
755
- "rewardsUrl",
756
- "signInUrl",
757
- "socialFourIconUrl",
758
- "socialOneIconUrl",
759
- "socialThreeIconUrl",
760
- "socialTwoIconUrl",
761
- "tierFourMiles",
762
- "tierOneMiles",
763
- "tierThreeMiles",
764
- "tierTwoMiles",
765
- "unsubscribeUrl",
766
- "viewOnlineUrl",
767
- "websiteUrl"
512
+ "subhead",
513
+ "termsUrl",
514
+ "tierName",
515
+ "tiers",
516
+ "unsubscribeUrl"
768
517
  ]
769
518
  },
770
519
  {
@@ -772,28 +521,19 @@ const presetCatalog = [
772
521
  channel: "email",
773
522
  category: "marketing",
774
523
  name: "Product updates roundup",
775
- description: "Round up recent product updates and an upcoming event, with stats and a walkthrough video.",
524
+ description: "A monthly product roundup with a metrics strip, shipped updates from a list, and an optional event.",
776
525
  variables: [
777
- "accessibilityGuideUrl",
778
- "accessibilityReportUrl",
779
- "accessibilityReportYear",
780
- "agentAdapterGuideUrl",
781
- "agentAdapterUrl",
782
- "blastVolume",
783
- "conferenceDate",
784
- "conferenceTicketsUrl",
785
- "contactsImportUrl",
786
- "customerStoryUrl",
787
- "domainTransferUrl",
788
- "emailsAnalyzed",
789
- "emailsPassed",
790
- "meetupDate",
791
- "meetupTime",
792
- "meetupUrl",
793
- "meetupVenue",
794
- "passRate",
526
+ "changelogUrl",
527
+ "event",
528
+ "firstName",
529
+ "headline",
530
+ "intro",
531
+ "issueMonth",
532
+ "issueNumber",
533
+ "metrics",
534
+ "preferencesUrl",
795
535
  "unsubscribeUrl",
796
- "walkthroughVideoUrl"
536
+ "updates"
797
537
  ]
798
538
  },
799
539
  {
@@ -801,39 +541,19 @@ const presetCatalog = [
801
541
  channel: "email",
802
542
  category: "marketing",
803
543
  name: "Flash getaway offer",
804
- description: "A limited-time getaway offer with a live countdown, two destinations, and a points-or-cash price.",
544
+ description: "A flash getaway offer with an input countdown, destinations from a list, and one booking action.",
805
545
  variables: [
806
- "copyrightYear",
807
- "countdownDays",
808
- "countdownHours",
809
- "countdownMinutes",
810
- "destinationOneImageUrl",
811
- "destinationOneRetailValue",
812
- "destinationOneUrl",
813
- "destinationTwoImageUrl",
814
- "destinationTwoRetailValue",
815
- "destinationTwoUrl",
816
- "exploreOffersUrl",
817
- "invitationId",
818
- "learnMoreUrl",
819
- "marketingCode",
820
- "minimumPoints",
821
- "nightlyValueRange",
822
- "offerExpiresDate",
823
- "ownershipPriceHigh",
824
- "ownershipPriceLow",
825
- "phoneDisplay",
826
- "phoneTelUrl",
827
- "pointsPriceHigh",
828
- "pointsPriceLow",
829
- "privacyUrl",
830
- "recipientInitials",
831
- "stayDurationLabel",
832
- "stayPrice",
546
+ "countdown",
547
+ "destinations",
548
+ "exploreUrl",
549
+ "firstName",
550
+ "headline",
551
+ "offerEnds",
552
+ "offerWindow",
553
+ "preferencesUrl",
554
+ "subhead",
833
555
  "termsUrl",
834
- "travelWindowMonths",
835
- "unsubscribeUrl",
836
- "viewInBrowserUrl"
556
+ "unsubscribeUrl"
837
557
  ]
838
558
  },
839
559
  {
@@ -841,29 +561,21 @@ const presetCatalog = [
841
561
  channel: "email",
842
562
  category: "marketing",
843
563
  name: "Membership benefits promotion",
844
- description: "Promote a paid membership by laying out its perks with icons and a single get-started action.",
564
+ description: "A paid-membership promotion with a price panel, benefits from a list, and one join action.",
845
565
  variables: [
846
- "accountSettingsUrl",
847
- "cafeLocationsUrl",
848
- "cafePerkIconUrl",
849
- "contactUsUrl",
850
- "deliveryIconUrl",
851
- "getStartedUrl",
852
- "groceryIconUrl",
853
- "logoImageUrl",
854
- "monthlyCreditIconUrl",
855
- "offerGalleryUrl",
856
- "onlineShoppingFaqsUrl",
857
- "organicIconUrl",
858
- "petCareIconUrl",
859
- "privacyPolicyUrl",
860
- "recipientEmail",
861
- "rewardsIconUrl",
862
- "rewardsTermsUrl",
566
+ "benefits",
567
+ "billingNote",
568
+ "comparePlansUrl",
569
+ "firstName",
570
+ "headline",
571
+ "joinUrl",
572
+ "preferencesUrl",
573
+ "priceLabel",
574
+ "renewsOn",
575
+ "subhead",
863
576
  "supportEmail",
864
- "termsOfUseUrl",
865
- "unsubscribeUrl",
866
- "vipPhoneIconUrl"
577
+ "trialLabel",
578
+ "unsubscribeUrl"
867
579
  ]
868
580
  },
869
581
  {
@@ -871,53 +583,19 @@ const presetCatalog = [
871
583
  channel: "email",
872
584
  category: "marketing",
873
585
  name: "Weekly deals circular",
874
- description: "A weekly retail circular with multi-buy deals, clippable coupons, membership perks, and app links.",
586
+ description: "A weekly retail circular with deals from a list, clippable coupons, and one shop action.",
875
587
  variables: [
876
- "allDealsUrl",
877
- "androidAppBadgeUrl",
878
- "androidAppUrl",
879
- "browserViewUrl",
880
- "clipCouponsUrl",
881
- "contactUrl",
882
- "copyrightYear",
883
- "couponFourImageUrl",
884
- "couponOneImageUrl",
885
- "couponThreeImageUrl",
886
- "couponTwoImageUrl",
887
- "couponsUrl",
888
- "deliveryMinimum",
889
- "digitalCouponsUrl",
890
- "feedbackUrl",
891
- "homeUrl",
892
- "iosAppBadgeUrl",
893
- "iosAppUrl",
894
- "membershipDetailsUrl",
895
- "membershipTrialUrl",
588
+ "coupons",
589
+ "deals",
590
+ "headline",
591
+ "intro",
592
+ "memberPerk",
896
593
  "membershipUrl",
897
- "multiBuyQuantity",
898
- "multiBuyUnitSavings",
899
- "pointsMultiplier",
900
594
  "preferencesUrl",
901
- "privacyUrl",
902
- "produceUrl",
903
- "recipientEmail",
904
- "shopDealUrl",
905
- "socialFourIconUrl",
906
- "socialFourUrl",
907
- "socialOneIconUrl",
908
- "socialOneUrl",
909
- "socialThreeIconUrl",
910
- "socialThreeUrl",
911
- "socialTwoIconUrl",
912
- "socialTwoUrl",
913
- "specialtySavings",
914
- "termsUrl",
915
- "trialDays",
595
+ "shopUrl",
916
596
  "unsubscribeUrl",
917
- "weeklyAdNavUrl",
918
- "weeklyAdUrl",
919
- "wellnessDiscountPercent",
920
- "wellnessUrl"
597
+ "validThrough",
598
+ "weekLabel"
921
599
  ]
922
600
  },
923
601
  {
@@ -925,68 +603,20 @@ const presetCatalog = [
925
603
  channel: "email",
926
604
  category: "marketing",
927
605
  name: "Seasonal sale flyer",
928
- description: "A dense seasonal sale flyer with tiered promo codes, gift-card offers, product grids, and category links.",
606
+ description: "A seasonal sale flyer with tiered promo codes, a category grid, and an optional gift-card offer.",
929
607
  variables: [
930
- "alternatorsImageUrl",
931
- "alternatorsUrl",
932
- "antifreezeImageUrl",
933
- "antifreezeUrl",
934
- "appBadgeFiveImageUrl",
935
- "appBadgeFourImageUrl",
936
- "appBadgeOneImageUrl",
937
- "appBadgeThreeImageUrl",
938
- "appBadgeTwoImageUrl",
939
- "appDownloadUrl",
940
- "batteriesImageUrl",
941
- "batteriesUrl",
942
- "brakePadsImageUrl",
943
- "brakePadsUrl",
944
- "contactUrl",
945
- "copyrightYear",
946
- "findStoreUrl",
947
- "fogGiftCardAmount",
948
- "fogOfferImageUrl",
949
- "fogOfferUrl",
950
- "freeServicesDetailsUrl",
951
- "headlightGiftCardAmount",
952
- "headlightGuideUrl",
953
- "headlightHeroImageUrl",
954
- "headlightOfferUrl",
955
- "howtoBannerImageUrl",
956
- "lightingBrandStripImageUrl",
957
- "lightingImageUrl",
958
- "lightingUrl",
959
- "offerEndDate",
960
- "offersValidRange",
961
- "oilBundlesDetailsUrl",
962
- "oilBundlesImageUrl",
963
- "oilBundlesUrl",
964
- "privacyUrl",
965
- "productThumbFourImageUrl",
966
- "productThumbOneImageUrl",
967
- "productThumbThreeImageUrl",
968
- "productThumbTwoImageUrl",
969
- "promoCode",
970
- "promoCodeUrl",
971
- "promoMaxSavings",
972
- "promoOrderThreshold",
973
- "promoPercentNoMin",
974
- "promoPercentThreshold",
975
- "promoShopUrl",
976
- "rewardsUrl",
977
- "servicesUrl",
978
- "shopOnlineUrl",
979
- "sparkPlugsImageUrl",
980
- "sparkPlugsUrl",
981
- "unsubscribeUrl",
982
- "viewInBrowserUrl",
983
- "websiteUrl",
984
- "weeklyDealsUrl",
985
- "wiperGiftCardAmount",
986
- "wiperOfferImageUrl",
987
- "wiperOfferUrl",
988
- "wipersImageUrl",
989
- "wipersUrl"
608
+ "categories",
609
+ "giftCard",
610
+ "headline",
611
+ "intro",
612
+ "offerWindow",
613
+ "preferencesUrl",
614
+ "promoTiers",
615
+ "seasonLabel",
616
+ "shopUrl",
617
+ "subhead",
618
+ "termsUrl",
619
+ "unsubscribeUrl"
990
620
  ]
991
621
  },
992
622
  {
@@ -994,28 +624,16 @@ const presetCatalog = [
994
624
  channel: "email",
995
625
  category: "marketing",
996
626
  name: "Feature release roundup",
997
- description: "Announce several new features in one email, each with an illustration, detail, and a learn-more link.",
627
+ description: "A feature release roundup with image-left rows from a list, release badges, and docs links.",
998
628
  variables: [
999
- "activityFeedImageUrl",
1000
- "activityFeedUrl",
1001
- "apiBlogUrl",
1002
- "apiDocsUrl",
1003
- "apiGaImageUrl",
1004
- "brandedShortenersImageUrl",
1005
629
  "changelogUrl",
1006
- "continentsAnalyticsUrl",
1007
- "domainMgmtUrl",
1008
- "ledgerpathShortenerUrl",
1009
- "linksWorkspaceBlogUrl",
1010
- "linksWorkspaceImageUrl",
1011
- "notificationsUrl",
630
+ "firstName",
631
+ "headline",
632
+ "intro",
633
+ "migrationUrl",
1012
634
  "preferencesUrl",
1013
- "reviewUrl",
1014
- "shortenerSunsetUrl",
1015
- "sketchlaneShortenerUrl",
1016
- "socialOneIconUrl",
1017
- "socialThreeIconUrl",
1018
- "socialTwoIconUrl",
635
+ "releases",
636
+ "sunsetOn",
1019
637
  "unsubscribeUrl"
1020
638
  ]
1021
639
  },
@@ -1024,23 +642,38 @@ const presetCatalog = [
1024
642
  channel: "email",
1025
643
  category: "marketing",
1026
644
  name: "Season clearance promotion",
1027
- description: "A last-chance clearance promotion with a hero banner, a deadline phrase, and a single shop action.",
645
+ description: "A last-chance clearance promotion with marked-down highlights three a row and one shop action.",
1028
646
  variables: [
1029
- "contactEmailUrl",
1030
- "grabDealsUrl",
1031
- "heroImageUrl",
1032
- "offerDeadlinePhrase",
1033
- "offerEndLong",
1034
- "offerEndShort",
1035
- "onlineVersionUrl",
647
+ "deadlinePhrase",
648
+ "firstName",
649
+ "headline",
650
+ "highlights",
651
+ "intro",
652
+ "newArrivalsUrl",
1036
653
  "preferencesUrl",
1037
- "seasonYear",
1038
- "secondaryBannerImageUrl",
1039
- "socialFourIconUrl",
1040
- "socialOneIconUrl",
1041
- "socialThreeIconUrl",
1042
- "socialTwoIconUrl",
1043
- "termsUrl",
654
+ "remainingNote",
655
+ "shopUrl",
656
+ "unsubscribeUrl"
657
+ ]
658
+ },
659
+ {
660
+ id: "product-launch-promo",
661
+ channel: "email",
662
+ category: "marketing",
663
+ name: "Product launch promotion",
664
+ description: "Launch a collection with a hero, a four-product grid, a discount code, and one shop action.",
665
+ variables: [
666
+ "bestSellersUrl",
667
+ "discountCode",
668
+ "firstName",
669
+ "headline",
670
+ "newArrivalsUrl",
671
+ "offerEnds",
672
+ "preferencesUrl",
673
+ "products",
674
+ "saleUrl",
675
+ "shopUrl",
676
+ "subhead",
1044
677
  "unsubscribeUrl"
1045
678
  ]
1046
679
  },
@@ -1049,17 +682,17 @@ const presetCatalog = [
1049
682
  channel: "email",
1050
683
  category: "lifecycle",
1051
684
  name: "Onboarding step",
1052
- description: "One step in an onboarding sequence, with progress and a single next action.",
685
+ description: "One step of an onboarding sequence, with the whole setup list, its progress, and a single next action.",
1053
686
  variables: [
1054
- "ctaLabel",
1055
- "ctaUrl",
687
+ "actionUrl",
1056
688
  "docsUrl",
1057
689
  "firstName",
1058
- "logoUrl",
1059
- "stepDescription",
690
+ "stepBody",
1060
691
  "stepNumber",
1061
692
  "stepTitle",
1062
- "stepTotal",
693
+ "steps",
694
+ "supportEmail",
695
+ "tip",
1063
696
  "workspace"
1064
697
  ]
1065
698
  },
@@ -1068,15 +701,15 @@ const presetCatalog = [
1068
701
  channel: "email",
1069
702
  category: "lifecycle",
1070
703
  name: "Trial ending",
1071
- description: "Warn a trial user their access is ending and prompt an upgrade before it lapses.",
704
+ description: "Warn a trial user their access is ending, with what the trial produced, the plan that keeps it, and an optional offer.",
1072
705
  variables: [
1073
706
  "contactUrl",
1074
707
  "daysLeft",
1075
708
  "firstName",
1076
- "logoUrl",
1077
- "planName",
1078
- "planPrice",
1079
- "planSummary",
709
+ "highlights",
710
+ "keeps",
711
+ "offer",
712
+ "plan",
1080
713
  "trialEndDate",
1081
714
  "upgradeUrl",
1082
715
  "workspace"
@@ -1087,13 +720,15 @@ const presetCatalog = [
1087
720
  channel: "email",
1088
721
  category: "lifecycle",
1089
722
  name: "Win-back",
1090
- description: "Re-engage a lapsed user by surfacing what's new and inviting them back.",
723
+ description: "Re-engage a lapsed user with an illustrated list of what shipped while they were away, and an optional return offer.",
1091
724
  variables: [
1092
- "ctaUrl",
1093
725
  "firstName",
1094
- "logoUrl",
726
+ "lastActive",
727
+ "offer",
728
+ "preferencesUrl",
729
+ "returnUrl",
1095
730
  "unsubscribeUrl",
1096
- "whatsNew",
731
+ "updates",
1097
732
  "workspace"
1098
733
  ]
1099
734
  },
@@ -1102,11 +737,13 @@ const presetCatalog = [
1102
737
  channel: "email",
1103
738
  category: "lifecycle",
1104
739
  name: "Feedback request",
1105
- description: "Ask an active user for feedback with a short survey and a reply-to fallback.",
740
+ description: "Ask an active user one question with clickable answers, a short survey, and a named sender who reads the replies.",
1106
741
  variables: [
1107
742
  "firstName",
1108
- "logoUrl",
1109
- "senderName",
743
+ "incentive",
744
+ "options",
745
+ "question",
746
+ "sender",
1110
747
  "surveyUrl",
1111
748
  "tenure",
1112
749
  "workspace"
@@ -1117,25 +754,16 @@ const presetCatalog = [
1117
754
  channel: "email",
1118
755
  category: "lifecycle",
1119
756
  name: "Product onboarding tour",
1120
- description: "Walk a new user through the product's core features with an illustrated tour and app-store links.",
757
+ description: "Walk a new user through the features worth turning on first, each with a still, its own points and a link, followed by a reading list.",
1121
758
  variables: [
1122
- "appStoreBadgeUrl",
1123
- "emailGuideImageUrl",
1124
- "emailGuideUrl",
759
+ "features",
760
+ "firstName",
1125
761
  "helpCenterUrl",
1126
- "incomeDashboardImageUrl",
1127
- "incomeDashboardUrl",
1128
- "incomeGuideImageUrl",
1129
- "incomeGuideUrl",
1130
- "mediaKitImageUrl",
1131
- "mediaKitUrl",
1132
- "playStoreBadgeUrl",
1133
- "socialOneIconUrl",
1134
- "socialThreeIconUrl",
1135
- "socialTwoIconUrl",
1136
- "unsubscribeUrl",
1137
- "welcomeEmailImageUrl",
1138
- "welcomeEmailUrl"
762
+ "intro",
763
+ "mobile",
764
+ "preferencesUrl",
765
+ "reads",
766
+ "unsubscribeUrl"
1139
767
  ]
1140
768
  },
1141
769
  {
@@ -1143,14 +771,16 @@ const presetCatalog = [
1143
771
  channel: "email",
1144
772
  category: "lifecycle",
1145
773
  name: "Setup checklist",
1146
- description: "A short welcome email that walks a new customer through three setup steps to launch their storefront.",
774
+ description: "Welcome a new customer with the setup steps that remain, each marked done or outstanding, and one link back into the flow.",
1147
775
  variables: [
1148
- "addAppsImageUrl",
1149
776
  "continueUrl",
1150
- "copyrightYear",
1151
- "pricingImageUrl",
1152
- "storePageImageUrl",
1153
- "unsubscribeUrl"
777
+ "firstName",
778
+ "helpUrl",
779
+ "note",
780
+ "steps",
781
+ "unsubscribeUrl",
782
+ "welcome",
783
+ "workspace"
1154
784
  ]
1155
785
  },
1156
786
  {