@usgb/forms 1.0.4 → 1.0.6

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/README.md CHANGED
@@ -31,13 +31,19 @@ Use `listFormDefinitions()` (or the manifest) when a CMS needs a picker of avail
31
31
 
32
32
  ## Available forms
33
33
 
34
- | `formId` | Kind | Fields | Consent | Size/layout |
35
- | --------------------------- | ------------ | --------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------ |
36
- | `magento-fik` | `lead` | First name, last name, email (required); phone (optional) | Optional TCPA (v1), marketing SMS, and terms/privacy checkboxes | `dense`, `large`, or `sidebar`; optional two-column name row |
37
- | `magento-ira-kick-article` | `lead` | First name, last name, email, phone (all required) | Optional TCPA checkbox (v2, links terms and privacy) | `dense`, `large`, or `sidebar`; optional two-column name row |
38
- | `magento-fik-blog-rail` | `lead` | First name, last name, email, phone (all required) | Required TCPA checkbox (v3, links terms and privacy) | `dense`, `large`, or `sidebar`; optional two-column name row |
39
- | `main-investors-kit-notice` | `lead` | Same as `magento-fik` | Clickwrap notice only (`lead-clickwrap` v2) | `dense`, `large`, or `sidebar`; optional two-column name row |
40
- | `newsletter` | `newsletter` | Email only | None | None — omit `variant` and `twoColumn` / `two-column` |
34
+ | `formId` | Kind | Fields | Consent | Size/layout |
35
+ | -------------------------------- | ------------ | --------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------ |
36
+ | `magento-fik-10dlc` | `lead` | First name, last name, email (required); phone (optional) | Optional TCPA (v1), marketing SMS, and terms/privacy checkboxes | `dense`, `large`, or `sidebar`; optional two-column name row |
37
+ | `magento-ira-401k` | `lead` | First name, last name, email, phone (all required) | Optional TCPA checkbox (v2, links terms and privacy) | `dense`, `large`, or `sidebar`; optional two-column name row |
38
+ | `magento-fik` | `lead` | First name, last name, email, phone (all required) | Required TCPA checkbox (v2, links terms and privacy) | `dense`, `large`, or `sidebar`; optional two-column name row |
39
+ | `magento-footer` | `newsletter` | Email only | None | None — omit `variant` and `twoColumn` / `two-column` |
40
+ | `wp-full-lead` | `lead` | First name, last name, email, phone (all required) | Clickwrap notice only (`lead-clickwrap` v2) | `dense`, `large`, or `sidebar`; optional two-column name row |
41
+ | `wp-request-call-back` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
42
+ | `wp-investor-kit-lead-nurturing` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
43
+ | `wp-product-launch` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
44
+ | `wp-ira-full-lead` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
45
+ | `wp-affiliate-ira-full-lead` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
46
+ | `wp-full-lead-captcha` | `lead` | Same as `wp-full-lead` | Same as `wp-full-lead` | Same as `wp-full-lead` |
41
47
 
42
48
  Appearances for every catalog form: `on-light` | `on-dark`. Appearance only recolors the form for readability on a light or dark host background — it never sets a background, padding, or radius. The host container owns those.
43
49
 
@@ -66,9 +72,9 @@ Only `legalUrls` is required, and only for the keys a form's consents name — t
66
72
  ```ts
67
73
  import { listEditorOptions } from '@usgb/forms'
68
74
 
69
- listEditorOptions('newsletter')
75
+ listEditorOptions('magento-footer')
70
76
  // [{ key: 'appearance', control: 'select', values: ['on-light', 'on-dark'], defaultValue: 'on-light', … }, …]
71
- // `variant`, `twoColumn`, and `legalUrls` are absent — newsletter takes none.
77
+ // `variant`, `twoColumn`, and `legalUrls` are absent — `magento-footer` takes none.
72
78
  ```
73
79
 
74
80
  ## Install
@@ -95,7 +101,7 @@ Peer dependency: `react` and `react-dom` `^18` or `^19`.
95
101
  Load the built script for a release (styles inject themselves):
96
102
 
97
103
  ```html
98
- <script src="https://forms.usgoldbureau.com/usgb-forms.1.0.4.js"></script>
104
+ <script src="https://forms.usgoldbureau.com/usgb-forms.1.0.5.js"></script>
99
105
  ```
100
106
 
101
107
  Pin the script and the catalog together: `usgb-forms.<version>.js` and `forms-manifest.<version>.json` on `https://forms.usgoldbureau.com/`. Gutenberg should load that matching manifest when listing `formId`s.
@@ -106,7 +112,7 @@ Pin the script and the catalog together: `usgb-forms.<version>.js` and `forms-ma
106
112
  import { UsgbForm, createStubAdapter, PWA_LEGAL_URLS } from '@usgb/forms'
107
113
  import '@usgb/forms/usgb-forms.css'
108
114
  ;<UsgbForm
109
- formId="magento-fik"
115
+ formId="magento-fik-10dlc"
110
116
  appearance="on-dark"
111
117
  variant="large"
112
118
  twoColumn
@@ -129,7 +135,7 @@ Newsletter (no consent or lead layout options):
129
135
 
130
136
  ```tsx
131
137
  <UsgbForm
132
- formId="newsletter"
138
+ formId="magento-footer"
133
139
  appearance="on-light"
134
140
  heading="Subscribe"
135
141
  ctaLabel="SUBSCRIBE"
@@ -141,7 +147,7 @@ Newsletter (no consent or lead layout options):
141
147
 
142
148
  | Prop | Required | Role |
143
149
  | ------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
144
- | `formId` | yes | Catalog key (`magento-fik`, `newsletter`, …) |
150
+ | `formId` | yes | Catalog key (`magento-fik-10dlc`, `magento-footer`, …) |
145
151
  | `adapter` | yes | `HostAdapter` with `host` and `submit()` |
146
152
  | `appearance` | no | `on-light` (default) or `on-dark` |
147
153
  | `variant` | no | Lead only. Default `dense`. Exactly one of `dense` \| `large` \| `sidebar` |
@@ -160,9 +166,9 @@ Newsletter (no consent or lead layout options):
160
166
  Load one script. Styles are injected automatically.
161
167
 
162
168
  ```html
163
- <script src="https://forms.usgoldbureau.com/usgb-forms.1.0.4.js"></script>
169
+ <script src="https://forms.usgoldbureau.com/usgb-forms.1.0.5.js"></script>
164
170
  <usgb-form
165
- form-id="magento-fik"
171
+ form-id="magento-fik-10dlc"
166
172
  appearance="on-dark"
167
173
  variant="large"
168
174
  two-column
@@ -175,16 +181,6 @@ Load one script. Styles are injected automatically.
175
181
  ></usgb-form>
176
182
  ```
177
183
 
178
- Clickwrap kit (`main-investors-kit-notice`) needs the two notice URLs:
179
-
180
- ```html
181
- <usgb-form
182
- form-id="main-investors-kit-notice"
183
- privacy-policy-url="/privacy-policy/"
184
- user-agreement-url="/user-agreement/"
185
- ></usgb-form>
186
- ```
187
-
188
184
  Submit is **not** an attribute. Markup alone uses a stub adapter. Assign a real `HostAdapter` in script:
189
185
 
190
186
  ```html
@@ -214,7 +210,7 @@ Submit is **not** an attribute. Markup alone uses a stub adapter. Assign a real
214
210
 
215
211
  ### Attribute map
216
212
 
217
- `form-id` defaults to `magento-fik`, `appearance` to `on-light`, `variant` to `dense`, and `host` to `wordpress`. `two-column` is a boolean attribute and is off when omitted. There is no `version` attribute — `definitionVersion` comes from the catalog.
213
+ `form-id` defaults to `magento-fik-10dlc`, `appearance` to `on-light`, `variant` to `dense`, and `host` to `wordpress`. `two-column` is a boolean attribute and is off when omitted. There is no `version` attribute — `definitionVersion` comes from the catalog.
218
214
 
219
215
  | Attribute | React prop |
220
216
  | --------------------------- | ------------------------------------------------------------- |
@@ -262,23 +258,49 @@ interface HostAdapter {
262
258
 
263
259
  ### Payload shape (summary)
264
260
 
265
- Successful submits send `formId`, `definitionVersion`, `submissionContractVersion`, `idempotencyKey`, `data` (field values), and optional `consents` (grant booleans, opt-in dates, and `*_consent_language` strings). Exact field sets come from the form’s catalog entry.
261
+ Successful submits send `formId`, `definitionVersion`, `submissionContractVersion`, `idempotencyKey`, `data`, and optional `consents`. `data` and `consents` are both arrays of `{ name, value }` entries. `data` follows catalog field order:
262
+
263
+ ```json
264
+ "data": [
265
+ { "name": "firstname", "value": "Olena" },
266
+ { "name": "lastname", "value": "Test" },
267
+ { "name": "email", "value": "test-22@gmail.com" },
268
+ { "name": "phone", "value": "5127121212" }
269
+ ]
270
+ ```
271
+
272
+ `consents` uses the same shape. Each pinned policy sends the language shown, including when its checkbox is unchecked. A checkbox also sends its grant flag as `true` or `false`. Its opt-in date is included only when that checkbox is checked. A notice has no grant flag: submit is the acknowledgment, so the payload sends `tcpa_consent_language` and `tcpa_form_opt_in_date`. Opt-in dates are `YYYY-MM-DD` in UTC. The timezone is not confirmed. This package does not keep a previously stored consent date.
273
+
274
+ ```json
275
+ "consents": [
276
+ { "name": "tcpa_consent_language", "value": "…" },
277
+ { "name": "tcpa_form_consent_granted", "value": true },
278
+ { "name": "tcpa_form_opt_in_date", "value": "2026-10-06" },
279
+ { "name": "sms_consent_language", "value": "…" },
280
+ { "name": "sms_form_consent_granted", "value": false },
281
+ { "name": "tospp_consent_language", "value": "…" },
282
+ { "name": "tospp_form_consent_granted", "value": true },
283
+ { "name": "tospp_form_opt_in_date", "value": "2026-10-06" }
284
+ ]
285
+ ```
286
+
287
+ Exact field sets come from the form’s catalog entry. `sms_form_opt_in_date` and `tospp_form_opt_in_date` are sent by this package when those checkboxes are checked. Creating and mapping those fields in HubSpot and Workato is separate work.
266
288
 
267
289
  ## Consent and legal URLs
268
290
 
269
291
  Consent policies are versioned and package-owned (checkboxes and/or clickwrap notices). Forms list zero or more pins (`definitionId` + `definitionVersion` + optional `required` for checkboxes). Hosts only supply document **hrefs**.
270
292
 
271
- - `magento-fik` pins `lead-tcpa`, `lead-sms`, and `lead-tospp` (all v1, optional checkboxes). Required URLs: `userAgreement`, `privacyPolicy` (`user-agreement-url`, `privacy-policy-url`).
272
- - `magento-ira-kick-article` pins `lead-tcpa` v2 only (optional checkbox). Unlike v1, v2 links the terms and privacy policy, so required URLs: `userAgreement`, `privacyPolicy`.
273
- - `magento-fik-blog-rail` pins `lead-tcpa` v3 only (required checkbox: automated text-message consent; “Terms of Service” links `userAgreement`, “Privacy Policy” links `privacyPolicy`). It shares the v1 payload keys. Required URLs: `userAgreement`, `privacyPolicy`.
274
- - `main-investors-kit-notice` pins `lead-clickwrap` v2 (notice only: Privacy Policy, Terms & Conditions, and text/call consent). Required URLs: `privacyPolicy`, `userAgreement`. It shares the v1 payload key `clickwrap_consent_language`. `lead-clickwrap` v1 (five document links) stays in the catalog and is not pinned.
275
- - `newsletter` has no consents and needs no legal URLs.
293
+ - `magento-fik-10dlc` pins `lead-tcpa`, `lead-sms`, and `lead-tospp` (all v1, optional checkboxes). Required URLs: `userAgreement`, `privacyPolicy` (`user-agreement-url`, `privacy-policy-url`).
294
+ - `magento-ira-401k` pins `lead-tcpa` v2 only (optional checkbox). Unlike v1, v2 links the terms and privacy policy, so required URLs: `userAgreement`, `privacyPolicy`.
295
+ - `magento-fik` pins `lead-tcpa` v2 only (required checkbox: telephone and SMS consent, including autodialer disclosure; “terms and conditions” links `userAgreement`, “privacy policy” links `privacyPolicy`). It shares the v1 payload keys. Required URLs: `userAgreement`, `privacyPolicy`.
296
+ - WordPress lead forms pin `lead-clickwrap` v2 (notice only: Privacy Policy, Terms & Conditions, and text/call consent). Required URLs: `privacyPolicy`, `userAgreement`. Both clickwrap versions record the shown copy as `tcpa_consent_language` and the submit date as `tcpa_form_opt_in_date` (the same keys as the TCPA checkboxes). They do not send a grant flag. `lead-clickwrap` v1 (five document links) stays in the catalog and is not pinned.
297
+ - `magento-footer` has no consents and needs no legal URLs.
276
298
  - `LEGAL_URL_ATTRS` lists every host-owned slot, including `clientAgreement` / `client-agreement-url`. No current catalog consent requires `clientAgreement`; it is still valid on `legalUrls` / the attribute (PWA Magento ships it in `PWA_LEGAL_URLS`).
277
299
  - PWA Magento defaults (`PWA_LEGAL_URLS`): `/content/client-agreement`, `/content/privacy-policy`, `/content/user-agreement`, `/content/market-loss-policy`, `/content/electronic-disclaimer`, `/content/terms-of-sale`.
278
300
  - WordPress must pass every URL required by the selected consents. A form with a missing required URL **does not render**. CMS pickers can compute the list with `getFormDefinition`, `resolveFormConsents`, and `collectRequiredLegalUrls`, then map keys through `LEGAL_URL_ATTRS`.
279
301
  - `isCompleteLegalUrls(legalUrls, requiredKeys)` is the same check the renderer uses.
280
- - Checkbox grants land in `consents` only (`tcpa_form_consent_granted`, `sms_form_consent_granted`, `tospp_form_consent_granted`). The exact copy shown is `tcpa_consent_language` (and the matching keys for other policies), even when unchecked.
281
- - Checking the TCPA box also adds `tcpa_form_opt_in_date` (YYYY-MM-DD). The notice form only sends `clickwrap_consent_language`.
302
+ - Checkbox grants land in `consents` only (`tcpa_form_consent_granted`, `sms_form_consent_granted`, `tospp_form_consent_granted`), each as `true` or `false`. The exact copy shown is `tcpa_consent_language`, `sms_consent_language`, or `tospp_consent_language`, even when that checkbox is unchecked.
303
+ - A checked TCPA, SMS, or terms/privacy box also adds `tcpa_form_opt_in_date`, `sms_form_opt_in_date`, or `tospp_form_opt_in_date` (`YYYY-MM-DD`, UTC). An unchecked box omits its date. Clickwrap notices send `tcpa_consent_language` and `tcpa_form_opt_in_date`, and no grant flag.
282
304
  - Hosts supply document hrefs only. Consent wording stays in this package.
283
305
 
284
306
  ## Success behavior
@@ -337,6 +359,6 @@ Appearance never paints a card. Put the form on a dark host surface and pass `ap
337
359
 
338
360
  ```html
339
361
  <div style="background: #001f3d; padding: 2rem; border-radius: 0.75rem">
340
- <usgb-form form-id="magento-fik" appearance="on-dark" …></usgb-form>
362
+ <usgb-form form-id="magento-fik-10dlc" appearance="on-dark" …></usgb-form>
341
363
  </div>
342
364
  ```
@@ -240,7 +240,7 @@
240
240
  }
241
241
  },
242
242
  "forms": {
243
- "magento-fik": {
243
+ "magento-fik-10dlc": {
244
244
  "definitionVersion": "1",
245
245
  "kind": "lead",
246
246
  "flow": { "type": "single" },
@@ -269,7 +269,7 @@
269
269
  }
270
270
  ],
271
271
  "editor": {
272
- "label": "Magento FIK",
272
+ "label": "Magento FIK 10DLC",
273
273
  "description": "First name, last name, and email required; phone optional. Optional checkboxes: transactional SMS (lead-tcpa v1), marketing SMS (lead-sms v1), and terms and privacy (lead-tospp v1).",
274
274
  "whenToUse": "TBD",
275
275
  "whenNotToUse": "TBD",
@@ -289,7 +289,7 @@
289
289
  "requiredLegalUrls": ["userAgreement", "privacyPolicy"]
290
290
  }
291
291
  },
292
- "magento-ira-kick-article": {
292
+ "magento-ira-401k": {
293
293
  "definitionVersion": "1",
294
294
  "kind": "lead",
295
295
  "flow": { "type": "single" },
@@ -308,7 +308,7 @@
308
308
  }
309
309
  ],
310
310
  "editor": {
311
- "label": "Magento IRA Kick Article",
311
+ "label": "Magento IRA 401k",
312
312
  "description": "First name, last name, email, and phone required. Optional telephone and SMS consent checkbox with linked terms and privacy (lead-tcpa v2).",
313
313
  "whenToUse": "TBD",
314
314
  "whenNotToUse": "TBD",
@@ -328,7 +328,7 @@
328
328
  "requiredLegalUrls": ["userAgreement", "privacyPolicy"]
329
329
  }
330
330
  },
331
- "magento-fik-blog-rail": {
331
+ "magento-fik": {
332
332
  "definitionVersion": "1",
333
333
  "kind": "lead",
334
334
  "flow": { "type": "single" },
@@ -342,13 +342,13 @@
342
342
  "consents": [
343
343
  {
344
344
  "definitionId": "lead-tcpa",
345
- "definitionVersion": "3",
345
+ "definitionVersion": "2",
346
346
  "required": true
347
347
  }
348
348
  ],
349
349
  "editor": {
350
- "label": "Magento FIK Blog Rail",
351
- "description": "First name, last name, email, and phone required. Required automated text-message consent checkbox with linked terms of service and privacy policy (lead-tcpa v3).",
350
+ "label": "Magento FIK",
351
+ "description": "First name, last name, email, and phone required. Required telephone and SMS consent checkbox with linked terms and privacy (lead-tcpa v2).",
352
352
  "whenToUse": "TBD",
353
353
  "whenNotToUse": "TBD",
354
354
  "options": [
@@ -367,23 +367,66 @@
367
367
  "requiredLegalUrls": ["userAgreement", "privacyPolicy"]
368
368
  }
369
369
  },
370
- "main-investors-kit-notice": {
370
+ "magento-footer": {
371
371
  "definitionVersion": "1",
372
- "kind": "lead",
372
+ "kind": "newsletter",
373
373
  "flow": { "type": "single" },
374
+ "fields": [{ "name": "email", "required": true }],
375
+ "ctaLabel": "SUBSCRIBE",
376
+ "editor": {
377
+ "label": "Magento Footer",
378
+ "description": "Email only. No consent.",
379
+ "whenToUse": "TBD",
380
+ "whenNotToUse": "TBD",
381
+ "options": [
382
+ "appearance",
383
+ "heading",
384
+ "subheading",
385
+ "ctaLabel",
386
+ "successMessage",
387
+ "successUrl"
388
+ ],
389
+ "supportedAppearances": ["on-light", "on-dark"],
390
+ "supportedVariants": [],
391
+ "requiredLegalUrls": []
392
+ }
393
+ },
394
+ "wp-full-lead": {
395
+ "definitionVersion": "1",
396
+ "kind": "lead",
397
+ "flow": {
398
+ "type": "single"
399
+ },
374
400
  "fields": [
375
- { "name": "firstname", "required": true, "group": "name" },
376
- { "name": "lastname", "required": true, "group": "name" },
377
- { "name": "email", "required": true },
378
- { "name": "phone", "required": false }
401
+ {
402
+ "name": "firstname",
403
+ "required": true,
404
+ "group": "name"
405
+ },
406
+ {
407
+ "name": "lastname",
408
+ "required": true,
409
+ "group": "name"
410
+ },
411
+ {
412
+ "name": "email",
413
+ "required": true
414
+ },
415
+ {
416
+ "name": "phone",
417
+ "required": true
418
+ }
379
419
  ],
380
- "ctaLabel": "CLAIM YOUR OFFER",
420
+ "ctaLabel": "Submit",
381
421
  "consents": [
382
- { "definitionId": "lead-clickwrap", "definitionVersion": "2" }
422
+ {
423
+ "definitionId": "lead-clickwrap",
424
+ "definitionVersion": "2"
425
+ }
383
426
  ],
384
427
  "editor": {
385
- "label": "Main Investors Kit (clickwrap)",
386
- "description": "First name, last name, and email required; phone optional. Clickwrap notice only (lead-clickwrap v2); no consent checkboxes.",
428
+ "label": "Full Lead Form (WP GF 1)",
429
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2); no consent checkboxes. GF form 1 → HubSpot 1ebf148f.",
387
430
  "whenToUse": "TBD",
388
431
  "whenNotToUse": "TBD",
389
432
  "options": [
@@ -402,28 +445,328 @@
402
445
  "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
403
446
  }
404
447
  },
405
- "newsletter": {
448
+ "wp-request-call-back": {
406
449
  "definitionVersion": "1",
407
- "kind": "newsletter",
408
- "flow": { "type": "single" },
409
- "fields": [{ "name": "email", "required": true }],
410
- "ctaLabel": "SUBSCRIBE",
450
+ "kind": "lead",
451
+ "flow": {
452
+ "type": "single"
453
+ },
454
+ "fields": [
455
+ {
456
+ "name": "firstname",
457
+ "required": true,
458
+ "group": "name"
459
+ },
460
+ {
461
+ "name": "lastname",
462
+ "required": true,
463
+ "group": "name"
464
+ },
465
+ {
466
+ "name": "email",
467
+ "required": true
468
+ },
469
+ {
470
+ "name": "phone",
471
+ "required": true
472
+ }
473
+ ],
474
+ "ctaLabel": "Submit",
475
+ "consents": [
476
+ {
477
+ "definitionId": "lead-clickwrap",
478
+ "definitionVersion": "2"
479
+ }
480
+ ],
411
481
  "editor": {
412
- "label": "Newsletter",
413
- "description": "Email only. No consent.",
482
+ "label": "Request Call Back (WP GF 11)",
483
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). Host sets `requested_callback=true` as context. GF form 11 → HubSpot 25c0c6ca.",
414
484
  "whenToUse": "TBD",
415
485
  "whenNotToUse": "TBD",
416
486
  "options": [
417
487
  "appearance",
488
+ "variant",
489
+ "twoColumn",
418
490
  "heading",
419
491
  "subheading",
420
492
  "ctaLabel",
493
+ "legalUrls",
421
494
  "successMessage",
422
495
  "successUrl"
423
496
  ],
424
497
  "supportedAppearances": ["on-light", "on-dark"],
425
- "supportedVariants": [],
426
- "requiredLegalUrls": []
498
+ "supportedVariants": ["dense", "large", "sidebar"],
499
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
500
+ }
501
+ },
502
+ "wp-investor-kit-lead-nurturing": {
503
+ "definitionVersion": "1",
504
+ "kind": "lead",
505
+ "flow": {
506
+ "type": "single"
507
+ },
508
+ "fields": [
509
+ {
510
+ "name": "firstname",
511
+ "required": true,
512
+ "group": "name"
513
+ },
514
+ {
515
+ "name": "lastname",
516
+ "required": true,
517
+ "group": "name"
518
+ },
519
+ {
520
+ "name": "email",
521
+ "required": true
522
+ },
523
+ {
524
+ "name": "phone",
525
+ "required": true
526
+ }
527
+ ],
528
+ "ctaLabel": "Submit",
529
+ "consents": [
530
+ {
531
+ "definitionId": "lead-clickwrap",
532
+ "definitionVersion": "2"
533
+ }
534
+ ],
535
+ "editor": {
536
+ "label": "Investor Kit Lead Nurturing (WP GF 13)",
537
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). GF form 13 → HubSpot 1ebf148f.",
538
+ "whenToUse": "TBD",
539
+ "whenNotToUse": "TBD",
540
+ "options": [
541
+ "appearance",
542
+ "variant",
543
+ "twoColumn",
544
+ "heading",
545
+ "subheading",
546
+ "ctaLabel",
547
+ "legalUrls",
548
+ "successMessage",
549
+ "successUrl"
550
+ ],
551
+ "supportedAppearances": ["on-light", "on-dark"],
552
+ "supportedVariants": ["dense", "large", "sidebar"],
553
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
554
+ }
555
+ },
556
+ "wp-product-launch": {
557
+ "definitionVersion": "1",
558
+ "kind": "lead",
559
+ "flow": {
560
+ "type": "single"
561
+ },
562
+ "fields": [
563
+ {
564
+ "name": "firstname",
565
+ "required": true,
566
+ "group": "name"
567
+ },
568
+ {
569
+ "name": "lastname",
570
+ "required": true,
571
+ "group": "name"
572
+ },
573
+ {
574
+ "name": "email",
575
+ "required": true
576
+ },
577
+ {
578
+ "name": "phone",
579
+ "required": true
580
+ }
581
+ ],
582
+ "ctaLabel": "Reserve Yours Today",
583
+ "consents": [
584
+ {
585
+ "definitionId": "lead-clickwrap",
586
+ "definitionVersion": "2"
587
+ }
588
+ ],
589
+ "editor": {
590
+ "label": "Product Launch (WP GF 15)",
591
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). Product IPO/pre-IPO pages. GF form 15 → HubSpot 950c50a1.",
592
+ "whenToUse": "TBD",
593
+ "whenNotToUse": "TBD",
594
+ "options": [
595
+ "appearance",
596
+ "variant",
597
+ "twoColumn",
598
+ "heading",
599
+ "subheading",
600
+ "ctaLabel",
601
+ "legalUrls",
602
+ "successMessage",
603
+ "successUrl"
604
+ ],
605
+ "supportedAppearances": ["on-light", "on-dark"],
606
+ "supportedVariants": ["dense", "large", "sidebar"],
607
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
608
+ }
609
+ },
610
+ "wp-ira-full-lead": {
611
+ "definitionVersion": "1",
612
+ "kind": "lead",
613
+ "flow": {
614
+ "type": "single"
615
+ },
616
+ "fields": [
617
+ {
618
+ "name": "firstname",
619
+ "required": true,
620
+ "group": "name"
621
+ },
622
+ {
623
+ "name": "lastname",
624
+ "required": true,
625
+ "group": "name"
626
+ },
627
+ {
628
+ "name": "email",
629
+ "required": true
630
+ },
631
+ {
632
+ "name": "phone",
633
+ "required": true
634
+ }
635
+ ],
636
+ "ctaLabel": "Submit",
637
+ "consents": [
638
+ {
639
+ "definitionId": "lead-clickwrap",
640
+ "definitionVersion": "2"
641
+ }
642
+ ],
643
+ "editor": {
644
+ "label": "IRA Full Lead Form (WP GF 20)",
645
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). Host sets `ira_lead=true` as context. GF form 20 → HubSpot b42770ef.",
646
+ "whenToUse": "TBD",
647
+ "whenNotToUse": "TBD",
648
+ "options": [
649
+ "appearance",
650
+ "variant",
651
+ "twoColumn",
652
+ "heading",
653
+ "subheading",
654
+ "ctaLabel",
655
+ "legalUrls",
656
+ "successMessage",
657
+ "successUrl"
658
+ ],
659
+ "supportedAppearances": ["on-light", "on-dark"],
660
+ "supportedVariants": ["dense", "large", "sidebar"],
661
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
662
+ }
663
+ },
664
+ "wp-affiliate-ira-full-lead": {
665
+ "definitionVersion": "1",
666
+ "kind": "lead",
667
+ "flow": {
668
+ "type": "single"
669
+ },
670
+ "fields": [
671
+ {
672
+ "name": "firstname",
673
+ "required": true,
674
+ "group": "name"
675
+ },
676
+ {
677
+ "name": "lastname",
678
+ "required": true,
679
+ "group": "name"
680
+ },
681
+ {
682
+ "name": "email",
683
+ "required": true
684
+ },
685
+ {
686
+ "name": "phone",
687
+ "required": true
688
+ }
689
+ ],
690
+ "ctaLabel": "Submit",
691
+ "consents": [
692
+ {
693
+ "definitionId": "lead-clickwrap",
694
+ "definitionVersion": "2"
695
+ }
696
+ ],
697
+ "editor": {
698
+ "label": "Affiliate — IRA Full Lead Form (WP GF 21)",
699
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). Host supplies affiliate_id/affiliate_offer_id/affiliate_transaction_id as context (not schema fields). GF form 21 → HubSpot 1d4e44b3.",
700
+ "whenToUse": "TBD",
701
+ "whenNotToUse": "TBD",
702
+ "options": [
703
+ "appearance",
704
+ "variant",
705
+ "twoColumn",
706
+ "heading",
707
+ "subheading",
708
+ "ctaLabel",
709
+ "legalUrls",
710
+ "successMessage",
711
+ "successUrl"
712
+ ],
713
+ "supportedAppearances": ["on-light", "on-dark"],
714
+ "supportedVariants": ["dense", "large", "sidebar"],
715
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
716
+ }
717
+ },
718
+ "wp-full-lead-captcha": {
719
+ "definitionVersion": "1",
720
+ "kind": "lead",
721
+ "flow": {
722
+ "type": "single"
723
+ },
724
+ "fields": [
725
+ {
726
+ "name": "firstname",
727
+ "required": true,
728
+ "group": "name"
729
+ },
730
+ {
731
+ "name": "lastname",
732
+ "required": true,
733
+ "group": "name"
734
+ },
735
+ {
736
+ "name": "email",
737
+ "required": true
738
+ },
739
+ {
740
+ "name": "phone",
741
+ "required": true
742
+ }
743
+ ],
744
+ "ctaLabel": "Submit",
745
+ "consents": [
746
+ {
747
+ "definitionId": "lead-clickwrap",
748
+ "definitionVersion": "2"
749
+ }
750
+ ],
751
+ "editor": {
752
+ "label": "Full Lead Form — captcha (WP GF 22)",
753
+ "description": "First name, last name, email, and phone required. Clickwrap notice only (lead-clickwrap v2). reCAPTCHA is a host bot-control concern, not a schema field. GF form 22 → HubSpot 034c00e5.",
754
+ "whenToUse": "TBD",
755
+ "whenNotToUse": "TBD",
756
+ "options": [
757
+ "appearance",
758
+ "variant",
759
+ "twoColumn",
760
+ "heading",
761
+ "subheading",
762
+ "ctaLabel",
763
+ "legalUrls",
764
+ "successMessage",
765
+ "successUrl"
766
+ ],
767
+ "supportedAppearances": ["on-light", "on-dark"],
768
+ "supportedVariants": ["dense", "large", "sidebar"],
769
+ "requiredLegalUrls": ["privacyPolicy", "userAgreement"]
427
770
  }
428
771
  }
429
772
  },