Client confirmed 2026-09-14 — account_status is a flat enum; level is held in current_level (UC_5.8 BR_5.8.9)
2026-09-10
v2.5 → v2.6
KLA-05 (Coupon_Expiring_Soon) — variable rename
Timing: Discount_Code_Duration_Days.
Timing: Post_Failure_Retention_Days.
Pure rename, no logic change. Mirrors UC_4.10.2 BR_4.10.2.3. Ops-editable rename, per technical team recommendation (BA session, 2026-09-10).
2026-09-08
v2.4 → v2.5
SES-30 — khối POD
Note ghi khối POD MENTORSHIP STATUSchỉ render khi trader có pod_leader_id, trader không thuộc pod nào thì ẩn cả khối (assumption A-12 của BA).
Giữ nguyên copy hiện tại, render cho mọi trader, không rẽ nhánh theo pod_leader_id.
BA chốt 2026-09-08: "cứ giữ y nguyên như mail hiện tại vẫn được". ⚠️ Hệ quả: trader không thuộc Pod nào vẫn đọc được câu "your active Pod Mentorship seat has been released to the waitlist" — BA đã cân nhắc và chấp nhận.
2026-09-08
v2.3 → v2.4
SES-30 — gỡ CTA
Body có nút [Reactivate Market Data] trỏ tới biến reactivation_url; khối POD kết thúc bằng câu "click the link below to instantly reactivate your data feeds" + note về việc click sẽ khôi phục feed ngay.
Gỡ hoàn toàn CTA và biến reactivation_url. Khối POD chỉ còn thông báo ghế Pod đã nhả; thêm khối HOW TO RESUME chỉ trader vào Settings → Market Data Management bấm Resubscribe trên từng feed. Email thuần thông báo, không còn hành động gộp.
Chỉ đạo trực tiếp của BA 2026-09-08 — một CTA duy nhất buộc phải gộp nhiều feed ở nhiều trạng thái thanh toán khác nhau, đẻ ra quá nhiều nhánh. Đóng luôn 2 mục Open Items của UC_4.17.1 (CTA gộp khi tổng $0; nhãn CTA lệch với nút dashboard).
2026-09-08
v2.2 → v2.3
SES-16, SES-17, SES-30, SES-31 — điểm đến của CTA
Không entry nào ghi CTA dẫn về màn nào. SES-31 ghi checkout_link trỏ về "trang Checkout chuẩn" pre-config product_id = MARKET_DATA. SES-30 ghi reactivation_url là bulk toggle miễn phí rồi đưa trader về tab.
SES-16[Update Payment Method →] → Market Data Management tab (không mở modal) — vì chỉ link Change trên billing bar mới có nhóm APM; link Change trong modal Subscribe chỉ mở Change Payment Card (thẻ NMI). SES-17 / SES-30 / SES-31 → mở modal Subscribe to Market Data pre-fill feed đăng ký gần nhất + phương thức thanh toán gần nhất. SES-30 vẫn là hành động gộp, nhưng tính tiền hay không quyết định theo từng feed bằng market_data_paid_until.
Chỉ đạo trực tiếp của BA 2026-09-08. Ref UC_4.17.1 BR_4.17.1.26 (mới). ⏳ Còn mở: modal hiển thị gì khi mọi feed pre-fill đều miễn phí (tổng $0) — UC_4.17.1 §10 mục 11.
2026-07-26
v1.0
Initial document
—
Full SES + Klaviyo registry
CR-20260726-001 applied
2026-07-28
v1.1
SES-21, SES-22 (removed)
Marked ⚠️ Superseded by CR-20260727-003; kept for history only.
Removed entirely — client confirmed Blacklist/Duplicate cases are hard-blocked pre-payment at Step 5 onBlur; Zapier Flow 1 no longer has a refund/reject path to dispatch these emails.
Confirmed no remaining references before deletion.
2026-07-28
v1.2
SES-23 Trigger
No CR reference — dangling citation in UC_2.7-2.8_v1.md §Step 3 Exception.
Added Ref: CR-20260728-004 to Trigger field.
Fix dangling citation found during audit.
2026-07-29
v1.3
Klaviyo Events scope note
Blanket statement: all events out of SotaTek scope, middleware/Zapier-routed.
Added trigger-mechanism exception: KLA-02 and KLA-22 fire via direct frontend-to-Klaviyo API call (no middleware/Zapier); all other events unchanged.
Client clarification, 2026-07-29 (Waitlist/Newsletter direct dual-call architecture)
2026-07-30
v1.4
SES-01, SES-02 Discord command copy
Discord /link [Generated UUID] command embedded inline in a sentence.
Command isolated into its own copyable code block (```/link [discord_link_token]```); surrounding sentence kept as plain text guidance. Placeholder renamed to [discord_link_token] to match actual field (Zapier Flow 1 Step 6 — Zapier Integration V7.pdf §Flow 1).
Client comment, 2026-07-30: full command + value should be in a codebox so it's copy-pasteable and works as-is.
Futures/Forex sections styled as plain italic inline labels; Discord instruction said "paste this command exactly as shown".
Futures/Forex sections given distinct bold header labels (🔷/🔶 markers) for clearer visual separation in the rendered email; Discord instruction reworded to explicitly state "copy the command below and paste it directly into the channel".
Client comment, 2026-07-30: make Futures vs. Forex distinction clearer via text size/bolding/layout; Discord block should indicate copy-paste directly into Discord to link account.
SES-04/07/08/16/17 had "Full Email: Pending". SES-24/25 did not exist. SES-26 was added in error.
SES-04: Full template with kyc_link + dots_onboarding_link per Flow 3A. SES-07/08: KYC retry/final-fail templates. SES-16/17: Market data payment failure / feeds disabled. SES-24: KYC manual reset (Flow 3.1). SES-25: Market Data Setup login link (Flow 3D, Futures only). SES-26 removed — Flow 3F Option B payment is completed on dashboard; no email sent.
Stage 3 SES template completion pass. STAGE3-042 applied.
2026-08-16
v1.7
SES-14 (full template); Trigger field corrected
Trigger: "International trader's Dots payout profile suspended / action required". Recipient: "Affected international trader". Full Email: Pending.
Two variants: Variant A (tax form rejected — STAGE3-082, new flow_link) + Variant B (account suspended — STAGE3-038, payout_portal_url). Trigger expanded to cover both trigger paths. Recipient corrected to all traders (not international only — BR_5.4.8 applies all asset classes).
2026-08-22
v1.8
SES-07 Trigger; SES-07 Required content block 1
Trigger: "RESUBMISSION_REQUESTED (document unclear / expired / partial). Also fired when a prior session expires or is abandoned…" — incorrectly listed expired as a document-quality reason inside RESUBMISSION_REQUESTED, and described expired/abandoned as a secondary note. Content block 1: "Explanation that the previous verification attempt requires resubmission" — not accurate for expired/abandoned path.
Trigger: clearly separates RESUBMISSION_REQUESTED (document unclear / partial) from expired (Code 9104) / abandoned as independent Veriff webhook statuses, with auto-renewal logic from CR-20260812-002 cited. Content block 1: covers both resubmission and session-expired/abandoned paths.
CR-20260812-002 applied — expired/abandoned are independent Veriff webhook statuses, not subcategories of RESUBMISSION_REQUESTED.
2026-08-22
v1.8 → v1.9
SES-26 (new)
—
Live_Onboarding_Credentials — Flow 3H Go Live credentials email. Two variants: Futures (R|Trader Pro download + CMR signing note); Forex (MT5/TraderEvolution). credentials_claimed_at initialized to NULL at provisioning.
STAGE3-060 / H-12 confirmed 2026-08-15. Renamed from Live_Onboarding_Level_1. Triggered after POST /provisioning/live-trader Step 4 DB write succeeds (BR_5.8.12).
2026-10-16
v2.x
SES-29: Required content block 5 (new); email body — "Ensure Accuracy of Manually Entered Information" note added
Required content blocks: 4 items, no mention of phone rejection re-entry. Email body "Important Compliance Notes" had only "Do Not Alter Pre-filled Information" + "Sequential Validation".
Added required content block 5: warning that Dots re-entry link on phone rejection has no prefill — trader enters all information from scratch. Added "Ensure Accuracy of Manually Entered Information" note to email body.
BA confirmed 2026-10-16 — aligns with UC_5.2 v2.5 BR_5.2.13.
2026-10-15
v2.x
SES-26 → SES-43 renumber
SES-26
SES-43 — client confirmed correct ID 2026-10-15.
2026-09-04
v2.1 → v2.2
SES-31 (new)
Không có entry nào cho email invoice thủ công của Path A. Urgent_Data_Payment_Required (SES-16) bị dùng lẫn cho cả nhánh nhắc prepay EOM−7 lẫn nhánh charge lỗi EOM−3.
SES-31 (mới):Invoice_APM_email — Flow 22 Path A, trigger EOM−7, CTA [Pay Invoice] → checkout_link. Body nêu song song hệ quả 2 tier trong một template thay vì tách variant. Tách bạch vai trò: SES-31 = nhắc trader APM tự trả (EOM−7); SES-16 = báo charge thẻ thất bại (EOM−3, Path B).
Copy chốt do BA cung cấp 2026-09-04. Làm rõ ranh giới mà [MDM-BIZ-18] để lẫn.
SES-16 và SES-17 để "Full Email (Assumption — exact copy pending client marketing team)" với copy placeholder do BA tự đặt; SES-16 chỉ có 1 bản, không rẽ nhánh theo tier; không có entry nào cho Zombie_Account_Pause.
SES-16: copy chốt, tách 2 variant theo market_data_billable — Variant A (LIVE Level 1–2, mất toàn bộ feed kể cả CME) và Variant B (LIVE Level 3+, chỉ mất add-on). Bỏ mọi câu hứa grace period / retry. SES-17: copy chốt. SES-30 (mới):Zombie_Account_Pause — Flow 12, kèm khối POD MENTORSHIP STATUS và CTA reactivation_url. Cả 3 bổ sung field From = support@stacktrading.com.
Copy chốt do BA cung cấp 2026-09-04. Khớp [MDM-BIZ-18] (email bắt buộc rẽ nhánh theo tier) và [MDM-ZAPF-06] (không retry hằng ngày). ⚠️ SES-17 dùng một template chung cho cả 2 tier — xem khối 📌 ở mục SES-17 bên dưới. (Con trỏ cũ tới UC_4.17.1 §10 mục 15 đã hỏng: mục đó bị gỡ khi Open Items rút từ 18 xuống 10 ở bản v2.)
SES-04: template Live_Onboarding_Level_1; trigger included Dots onboarding link simultaneously; email body had both kyc_link + dots_onboarding_link in one email
SES-04 renamed to Live_Onboarding_Compliance_Initiation; Veriff kyc_link only — Dots deferred to SES-29. SES-29 (new): Dots_Payout_Setup — dispatched from Flow 3B (UC_5.2) after Veriff APPROVED with flow_link from POST /v2/flows.
Client confirmed 2026-08-26. BR_5.1.2 + UC_5.1 Step 4 already correct. Email split now reflected in SES registry.
CR-20260726-001: Splits original Welcome_Sim_Challenge (Zapier V7 Step 8) into 3 emails. This is Email 1 — sent immediately after payment, before provisioning completes.
Field
Value
Email ID
SES-01
Template Key
Welcome_Sim_Challenge_Part1
Trigger
Immediately after POST /execute-checkout returns HTTP 200 (pre-provisioning)
Expectation-setting notice: provisioning is underway
Links to community content and insights
Discord Onboarding block: invite link + /link [UUID] command instruction for #verify channel
Full Email (Assumption — exact copy pending client marketing team):
Subject: Welcome to Stack Trading — Your Account is Being Set Up
Header: Welcome to the Trading Floor, [First Name].
Body:
You're in. Your payment was successful and we're now securely building your trading account in the background. This typically takes just a few minutes — we'll email you the moment your credentials are ready.
platform_username displayed in plaintext (password never included)
Single-use "Claim Your Account" link (48 h JWT) — requires email verification, forces Dashboard + MFA enrollment
Platform-specific connection guide:
Futures: R|Trader Pro download link + mandatory activation instructions
Futures (platform-specific): Connection guide for chosen platform (TradeSea / Quantower / ATAS / Motivewave / Sierra Chart / TradingView)
Forex: MT5 or TraderEvolution connection guide
Discord Onboarding block (same as SES-01)
Security:platform_password_ciphertext must NEVER appear in this email.
Full Email (Assumption — exact copy pending client marketing team):
Subject: Your Stack Trading Account is Ready — Claim It Now
Header: Your Trading Platform is Ready.
Body:
Your Stack Trading SIM account has been provisioned. Use the details below to get started.
Your Platform Username:[platform_username]
[Claim Your Account →](single-use link, valid 48 hours)
Clicking the link above will prompt you to verify your email, enroll in MFA, and securely access your trading credentials from the dashboard.
Connect Your Platform
🔷 FUTURES TRADERS — Mandatory Step
You must download R|Trader Pro and log in using your provided credentials to activate your CME data feeds and digitally sign your exchange agreements. Your data feed will remain disabled until you complete this authentication. Your chosen platform will have market data upon completion of this step.
[Download R|Trader Pro] | [Platform connection guide for: TradeSea / Quantower / ATAS / Motivewave / Sierra Chart / TradingView]
Already joined? Go to the #verify channel, then copy the command below and paste it directly into the channel to unlock your private trading floor channels:
CR-20260726-001: Email 3 — dispatched on demand when user's claim link has expired.
Field
Value
Email ID
SES-03
Template Key
Welcome_Sim_Challenge_Resend
Trigger
User clicks [Resend Activation Link] on expired claim screen → POST /public/resend-activation-link (public, no auth — Ref: CR-20260728-006) → new 48 h JWT generated. Distinct from the Admin-only POST /resend-welcome (via BPS), which also dispatches this same template when Ops triggers a resend.
Flow 3A (Branch A — New Trader): Veriff session generated successfully (POST /v1/sessions returns HTTP 200). Dispatched after Veriff session creation succeeds. Dots payout setup link is NOT included here — it is sent separately in SES-29 (Dots Payout Setup) from Flow 3B after Veriff APPROVED.
Recipient
Trader who passed SIM challenge and requires full onboarding (New Trader branch)
Template name history: renamed from Live_Onboarding_Level_1 to Live_Onboarding_Compliance_Initiation (STAGE3-060 / 2026-08-15) to avoid collision with Live_Onboarding_Credentials email at Flow 3H.
Required content blocks:
kyc_link — Veriff hosted verification URL (applies to all traders, all asset classes post-STAGE3-037)
Clear instruction to complete identity verification — this is the only action required from this email
Expectation-setting: trader will receive a second email to set up their payout profile once identity verification is complete
Note:dots_onboarding_link / flow_link is NOT included in this email. Dots payout setup link is dispatched in SES-29 (template: Dots_Payout_Setup) from Flow 3B (UC_5.2) after Veriff returns APPROVED. (Source: UC_5.1 BR_5.1.2; STAGE3-050 / STAGE3-060; client confirmed 2026-08-26)
Full Email (Client-confirmed — 2026-10-15):
Subject: Welcome to Level [Insert Level]. Identity Verification Required.
Body:
Congratulations on passing the Associate Track entrance exam. You have proven you can execute.
You are no longer in a simulation. Your next step is trading live capital. If you are transitioning from a perpetual demo firm, understand that the psychology of real money changes today. Manage your risk accordingly.
To activate your live Level 1 account, you must complete your identity verification.
Step 1: Identity Verification
Verify your identity through our secure KYC portal. This typically takes 2 to 5 minutes with a government-issued ID.
[Start Identity Verification →](link: kyc_link)
Once your identity is verified, we will send you a second email with a link to complete your payout profile setup. Both steps are required before your live account can be activated and funded.
[Insert Level] in the subject is a dynamic variable — resolved 2026-10-15. Zapier variable name TBD (e.g., {{trader_level}} or {{current_level}}); dev to confirm exact token at implementation.
Post-payment restricted region check match (Zapier fail-safe). Issued simultaneously with automated refund (or, for payment_method = CRYPTO, simultaneously with the ledger log + Freshdesk compliance ticket — Ref: CR-20260727-004, since crypto refunds cannot be automated).
Recipient
Trader whose billing country matched Compliance_geo_restrictions
Required content: Immediate refund notice — inform user their payment has been refunded due to regional restrictions. For crypto, wording must reflect manual treasury desk restitution rather than an automated refund (Ref: CR-20260727-004).
Flow 1 Step 3 Exception — fired on two paths: (1) POST /provision-sim-user fails after 3 retry attempts (initial + 5 s + 30 s) → "Manual" escalation path (step 5); (2) "Zapier Call Failure" — call did not complete, HALT immediately (step 4). Both paths: Ops is alerted via Freshdesk ticket; this email notifies the user that provisioning is delayed. (Ref: CR-20260728-004)
Required content: Inform user their payment was successful but account setup is delayed. Assure them Ops has been alerted and will email their access link shortly.
ATAS/MotiveWave B2B license API call (CHR-130) fails after 3 retry attempts, during Checkout provisioning. Unlike SES-23, this does NOT halt provisioning — Rithmic account is kept and the user proceeds to login normally; only the platform-specific license is affected. Fired to the trader at the same time as the Ops Slack alert (Ref: common_rules.md §19.4, QnA confirmed Adam Culver 2026-10-15)
Recipient
Trader whose platform_selection is ATAS or MotiveWave and whose license call failed
UC Reference
UC_2.7-2.8 (CHR-130)
Required content: Inform the user that checkout and account setup otherwise completed successfully — their Rithmic credentials are ready and they can log in normally — but there was an issue generating their [platform_selection] charting license specifically. Reassure them this has been escalated to Operations and they'll receive a follow-up email once their platform license is ready.
Full Email:
Subject: Action Needed on Your [platform_selection] License — Our Team Is On It
Header: We Hit a Snag Setting Up Your [platform_selection] License, [First Name].
Body:
We weren't able to automatically generate your [platform_selection] charting license during setup.
Our Operations team has already been notified and is setting up your [platform_selection] license manually. You'll receive a follow-up email with your license details as soon as it's ready.
No further action is needed on your end right now.
Explanation that the previous verification attempt requires resubmission (RESUBMISSION_REQUESTED) or that the Veriff session expired / was abandoned without completion (expired/abandoned webhook)
kyc_link — fresh Veriff session URL for resubmission
Guidance on what to improve (clearer documents, better lighting)
Full Email (Client-confirmed — 2026-10-15):
Subject: Your Identity Verification Needs Attention, [First Name].
Header: Your Identity Verification Needs Attention, [First Name].
Body:
Our identity verification partner was unable to process your submitted documents. This can happen when images are blurry, partially cropped, or expired.
You have [3 - veriff_attempts] attempt(s) remaining.
Tips for a successful resubmission:
Ensure your document is fully visible and not cropped
Use good lighting and avoid glare or shadows
Make sure the document is valid and not expired
Submit a government-issued ID (passport, national ID, or driver's license)
Flow 3B: Veriff returns DECLINED AND veriff_attempts = 3 (third failure — hard compliance block). veriff_failed_flag = TRUE set in Users table. No further retries permitted without Ops manual reset.
Clear notice that identity verification has failed after the maximum number of attempts
Statement that the account cannot be activated at this time
Contact instruction — trader must reach support to discuss options (manual Ops review path)
No retry link (hard block — veriff_failed_flag = TRUE)
Full Email (Client-confirmed — 2026-10-15):
Subject: Action Required: Live Onboarding Paused - Identity Verification Unsuccessful
Header: We Were Unable to Verify Your Identity, [First Name].
Body:
Unfortunately, our automated compliance system was unable to verify your identity after three attempts.
Because identity verification is a strict regulatory requirement for Live Direct Market Access, your onboarding sequence has been paused and your account remains locked.
You do not need to contact support. Our system has automatically generated a secure escalation ticket for your profile. An analyst from our Operations Team will conduct a manual compliance review of your document submissions and reach out to you directly via this email address within 24 hours with your next steps.
Flow 1.5: Signwell webhook (Founding Pod Leader Agreement signed) — sent at Step 8, after the provisioning gate (UC_8.2.13)
Recipient
New Founding Pod Leader
Required content:
100% discount Amplify coupon code for Associate Track
Google Workspace invitation link and onboarding instructions
Mentor profile Typeform link
(Only if Discord not linked — discord_user_id IS NULL) Discord invite URL + instruction to type /link [discord_link_token] in #verify (token from UC_8.2.13 Step 7.5; BA decision 2026-10-30)
Security: Workspace passwords must NOT be emailed. SSO/MFA enforced on first login.
Flow 6 Path B (International): Trader reaches Level 6 AND Dots payout profile check returns payout_status = 'Active'. If Dots check fails/suspended instead, Dots_Profile_Action_Needed (SES-14) fires and this Zap HALTs — SES-13 is not sent until re-validated as Active.
Recipient
International trader reaching Level 6 (remains a 1099/Dots contractor — no W-2 conversion)
Source
Zapier Integration V7.pdf, Flow 6 "Level 6 Transition (W-2 vs. International)" — Path B (International); confirmed timing per QnA_Level_Promotion.md §B (Round Q&A) Q3/A3
Required content blocks:
Congratulations on reaching Level 6, framed as remaining a contractor (not converting to W-2) with higher payout splits
Explain "Base Income" is now paid as a monthly retainer (not hourly/salary like the W-2 track)
Country-specific contractor documentation: link/attachment to the Independent Contractor Agreement for e-signature (per-country template)
Instruction that the signed agreement must be uploaded/stored before the transition is complete
Note: Unlike SES-14, this template has only one variant — it fires solely on the International path after the Dots gate passes. There is no separate "US" variant of SES-13 (US path uses Level_6_Offer_Configurator + Rippling W2_Offer_Template instead, per Flow 6 Path A).
Full Email (Assumption — exact copy pending client marketing team):
Subject: Congratulations on Reaching Level 6 — Next Steps for Your Contractor Agreement
Header: Congrats on Level 6, [First Name].
Body:
As an International Trader, you remain a contractor but now earn higher payout splits. Your "Base Income" will be paid going forward as a monthly retainer.
To complete your transition, please review and sign your country-specific contractor documentation:
[Review & Sign Your Contractor Agreement →](link: contractor_agreement_link)
Once signed, your agreement will be stored on file and your Level 6 international contractor status will be fully active.
UC_5.4 — two paths dispatch this template: (1) Dots suspension webhook fires → payout_status = 'Suspended' (BR_5.4.8 / STAGE3-038); (2) W-9/W-8BEN tax form rejected by Dots Compliance (Kịch bản 1 / STAGE3-082) → new flow_link generated via POST /v2/flows.
Recipient
Affected trader (US or international — all asset classes)
Clear statement: payout profile requires action before live trading can proceed
Explain the specific issue (tax form rejection OR account suspension)
CTA to resolve: Variant A — new flow_link to re-complete tax form; Variant B — link to Dots payout portal
Warning that account activation (Flow 3D) is blocked until resolved
Non-blocking rule (BR_5.4.9): Email dispatch failure must NOT roll back the payout_status = 'Suspended' DB write. Both must execute independently.
Full Email (Assumption — exact copy pending client marketing team):
⚠️ Two variants — select based on trigger path:
Variant A — Tax form rejected (Kịch bản 1 / STAGE3-082)
Subject: Action Required: Your Payout Profile Needs to Be Resubmitted
Header: Your Payout Setup Needs Attention, [First Name].
Body:
Our payout partner was unable to process your tax form submission. This can happen when the information submitted does not match your verified identity documents.
To continue with your live account activation, you need to resubmit your payout profile using the link below:
[Complete Your Payout Profile →](link: flow_link — new session generated)
Inside, you will be asked to:
Re-confirm your tax information (W-9 or W-8BEN)
Verify your payout routing details
Your live account cannot be activated until your payout profile is verified. This step is required by our payout partner for compliance purposes.
If you believe this was sent in error or need help completing the form, contact support@stacktrading.com.
Variant B — Profile suspended / paused / failed (STAGE3-038)
Subject: Action Required: Your Payout Profile Has Been Suspended
Header: Your Payout Profile Requires Immediate Attention, [First Name].
Body:
Your payout profile has been flagged by our payout partner and is currently suspended. As a result, your live trading onboarding cannot proceed until this is resolved.
Common reasons for suspension include:
A tax form (W-9 / W-8BEN) that requires re-verification
A linked bank account that is no longer active or valid
A compliance flag raised by our payout partner
To review and resolve your payout profile, log in to the payout portal:
[Manage Your Payout Profile →](link: payout_portal_url)
If you are unable to resolve the issue through the portal, contact support@stacktrading.com and reference your account. Our team will escalate to the payout partner on your behalf.
Your live account activation is paused until your payout profile status is restored to Active.
📌 [Feed List] chỉ liệt kê các feed sẽ bị tắt, không phải toàn bộ feed trong hoá đơn. Với Level 3+, base CME nằm trong hoá đơn nhưng không bị tắt nên không xuất hiện ở đây.
⚠️ Copy không được hứa retry hằng ngày. Hệ thống chỉ thử charge đúng 2 lần — EOM−3 và Day 0. Ref: BR_4.17.1.23.
📌 Trader trả bằng APM không có vault → [Card Brand] / [Last 4] là null → dùng nhánh fallback: "Your most recent payment via {APM_name} was unsuccessful."
🔗 CTA [Update Payment Method →] dẫn về Market Data Management tab (không mở modal nào). Lý do: trader bị decline thẻ có thể muốn chuyển hẳn sang APM, mà chỉ link Changetrên billing bar của tab mới mở Change Payment Method có nhóm APM — link Change bên trong modal Subscribe chỉ mở Change Payment Card (thẻ NMI, không có APM). Ref: UC_4.17.1 BR_4.17.1.26.
Subject: Action required: update your card before [End of Month Date]
Hi [First Name],
We tried to charge your card on file for your [Billing Month] market data subscription, and the payment did not go through.
────────────────────────────────────
WHAT HAPPENED
────────────────────────────────────
• Payment failed: [Amount] for [Billing Month]
• Card on file: [Card Brand] ending in [Last 4]
• Feeds affected: [Feed List]
────────────────────────────────────
WHAT YOU NEED TO DO
────────────────────────────────────
Update your payment method before [End of Month Date].
[Update Payment Method →]
If [Card Brand] ending in [Last 4] is expired or no longer valid, replace it with a working card. If it's still good, check with your bank that the charge isn't being blocked.
────────────────────────────────────
WHAT'S AT RISK
────────────────────────────────────
If that final attempt fails on [End of Month Date], your market data feeds will be switched off the same day.
You can resubscribe later from Settings → Market Data, but your feeds will remain off until a payment clears.
For assistance, contact support@stacktrading.com.
Subject: Action required: update your card before [End of Month Date]
Hi [First Name],
We tried to charge your card on file for your [Billing Month] market data subscription, and the payment did not go through.
────────────────────────────────────
WHAT HAPPENED
────────────────────────────────────
• Payment failed: [Amount] for [Billing Month]
• Card on file: [Card Brand] ending in [Last 4]
• Feeds affected: [Feed List]
────────────────────────────────────
WHAT YOU NEED TO DO
────────────────────────────────────
Update your payment method before [End of Month Date].
[Update Payment Method →]
If [Card Brand] ending in [Last 4] is expired or no longer valid, replace it with a working card. If it's still good, check with your bank that the charge isn't being blocked.
────────────────────────────────────
WHAT'S AT RISK
────────────────────────────────────
If that final attempt fails on [End of Month Date], your premium exchange feeds will be switched off the same day.
Your base CME feed will remain active as it is covered by the firm.
You can resubscribe to your premium feeds later from Settings → Market Data, but they will remain off until a payment clears.
For assistance, contact support@stacktrading.com.
Flow 22 — End of Month Hard Check ngày cuối tháng: Market_Data_Billable == TrueANDLast_Data_Payment_Status == Failed → broker API tắt feed. Gửi kèm dashboard notification severity CRITICAL.
Biến của template:[First Name] · [Disabled Feeds list]
🔗 CTA [Re-Subscribe to Market Data →] mở thẳng modal Subscribe to Market Data, pre-fill sẵn các feed trader đăng ký gần nhất + phương thức thanh toán gần nhất. Ref: UC_4.17.1 BR_4.17.1.26.
📌 Một template dùng chung cho cả 2 tier — KHÔNG tách variant. Email này chỉ báo feed nào vừa bị tắt và hướng dẫn resubscribe. Trader LIVE Level 1–2 bị tắt cả base CME thì chính họ hiểu là phải mua lại mới trade được, nên không cần copy riêng. Khác SES-16 (2 variant) vì SES-16 phải giải thích hệ quả sẽ xảy ra, còn SES-17 chỉ báo việc đã xảy ra.
Subject: Your additional market data feeds have been disabled
Hi [First Name],
Your card was still declined by the end of the month, so we've turned off your additional exchange feeds to keep your account in good standing.
────────────────────────────────────
WHAT'S CHANGED
────────────────────────────────────
⏸ Disabled as of today:
• [Disabled Feeds list]
────────────────────────────────────
HOW TO RESUBSCRIBE
────────────────────────────────────
You can restore your premium feeds at any time. Simply log into your dashboard, navigate to Market Data Management, and select the feeds you need. Once your payment clears, your feeds will be re-enabled instantly.
[Re-Subscribe to Market Data →]
────────────────────────────────────
WHY THIS HAPPENED
────────────────────────────────────
This was an automated routine aligned with CME market data billing. If you no longer need the additional feeds, you can leave them disabled and continue trading with your base CME feed.
Flow 3.1: BPS Ops admin triggers POST /api/bps/kyc/reset for a trader. veriff_failed_flag cleared, veriff_attempts = 0, new Veriff session created. Distinct from POST /resend-welcome (Flow 41) which must NOT be used for KYC reset.
Notification that the identity verification process has been reset by the operations team
Fresh kyc_link — new Veriff session URL
Confirmation that the attempt counter has been reset (trader has full 3 attempts again)
Instruction to complete verification at their earliest opportunity
Security: This email is Ops-triggered only. The BPS admin endpoint (POST /api/bps/kyc/reset) is authenticated and audited. A Slack alert is also sent to the Ops channel upon reset.
Full Email (Assumption — exact copy pending client marketing team):
Subject: Your Identity Verification Has Been Reset
Header: Ready to Try Again, [First Name].
Body:
Our operations team has reviewed your account and reset your identity verification. You now have a fresh start — your attempt count has been reset to zero.
Please complete your identity verification using the secure link below:
[Start Identity Verification →](link: kyc_link)
If you have any difficulty completing verification, contact support@stacktrading.com and reference your account.
Flow 3D: All aggregation gates pass for a Futures trader (identity verified + payout approved + Rippling ICA signed) → account_status set to first active level → Market Data Setup login link generated and dispatched. Applies to Futures traders only (Forex traders follow a different activation path).
Recipient
Futures trader who has completed all Level 1 onboarding steps
Market Data Setup login link (single-use or time-limited) to configure exchange data subscriptions
Instruction: must complete Market Data Setup before live trading begins
Reference to the R|Trader Pro step (required for CME data feed activation — already covered in SES-02, but brief reminder here)
Full Email (Client-confirmed — 2026-10-15):
Subject: Final Step: Complete Your Market Data Setup
Header: Almost There, [First Name] — One Last Step.
Body:
You've completed all the core onboarding requirements. There's one final step before you can start live trading: configure your market data subscriptions.
[Access Market Data Setup →](link: market_data_setup_login_link)
Inside, you'll select your exchange data packages. Your selections will determine which markets you can trade and the associated monthly data fees.
Please note that as a Level 1 and Level 2 provisional trader, you are responsible for paying these market data feed fees. Once you successfully advance to Level 3, Stack Trading will fully reimburse your Base CME fees and cover that specific base cost going forward. Premium feeds (NYMEX, COMEX, CBOT) are always the responsibility of the trader at all levels.
Reminder: If you haven't already, download R|Trader Pro and log in with your credentials to sign your CME market data agreements.
Once setup is complete, your live account will be fully activated.
SES-26 — Market Data Payment LinkREMOVED (2026-08-14)
Flow 3F Option B payment is completed entirely on the dashboard (frontend calls Calculate Cart + Execute Checkout endpoints inline). No payment link is emailed. (Source: QnA STAGE3-042 confirmed 2026-08-12)
SES-26 re-assigned 2026-08-22, then renumbered to SES-43 (client confirmed 2026-10-15) — see entry below.
SES-43 (renumbered from SES-26 — client confirmed 2026-10-15)
Template Key
Live_Onboarding_Credentials
Trigger
Flow 3H Step 5 — fired immediately after POST /provisioning/live-trader Step 4 DB write succeeds (account_status → live, credentials stored). Not sent if Step 4 fails (BR_5.8.12).
Recipient
Trader whose live DMA account was just provisioned
Congratulations — live account has been provisioned
platform_username — trader's login handle
CTA button → Dashboard Connections page (app.stacktrading.com/settings/connections) — trader retrieves password via GET /platform-credentials after Auth0 OTP login; password is displayed once on UI only (platform_password_ciphertext — never emailed, BR_5.8.14)
connection_guide_url — link to PDF or Notion setup guide for the platform
(Futures only) R|Trader Pro download link + note that CME subscriber agreements must be signed on first login before data feeds are unlocked
(Forex only) platform name (platform_selection: MT5 or TraderEvolution); trader retrieves server/connection details from Dashboard
Support contact
credentials_claimed_at initialized to NULL at provisioning; set on first GET /platform-credentials call (first Dashboard view). Zapier checks credentials_claimed_at IS NULL before allowing automated credential resend to prevent abuse on active live accounts.
Full Email — 🔷 Futures variant (Client-confirmed — 2026-10-15):
Subject: Live Account Provisioned: Futures DMA
Body:
[First_Name],
Your Stack Trading live Direct Market Access (DMA) account is provisioned.
For security purposes, platform passwords and license keys are never transmitted via email. Log in to your dashboard to retrieve your encrypted connection details.
[Dashboard Screenshot Placeholder]
Action Required: Market Data Activation
To activate your market data feeds, you must sign your CME exchange agreements. You can do this via:
Web portal (Mac & Windows): [CME Agreement Portal link]
R|Trader Pro app (Windows only): download and sign on first login
Your market data feeds will remain locked until agreements are signed.
CME agreement signing — confirmed 2026-10-15: Two options: (1) Web portal — browser-based, compatible with Mac and Windows; (2) R|Trader Pro desktop app — Windows only. Email copy reflects both options.
Full Email — 🔶 Forex variant (Client-confirmed — 2026-10-15):
Subject: Live Account Provisioned: Forex DMA
Body:
[First_Name],
Your Stack Trading live account is provisioned.
For security purposes, platform passwords are never transmitted via email. Log in to your dashboard to retrieve your encrypted connection details.
Flow 39 — BPS Admin triggers POST /bps/resend-rtrader-instructions for a trader with account_status = 'SIM_ACTIVE' (Level 0). Middleware resolves template = 'SES-44', fires RESEND_RTRADER_INSTRUCTIONS webhook to Zapier with this template flag.
Recipient
Futures SIM trader whose CME subscriber agreements have not been signed
CME classification rationale: SIM traders operate with simulated capital. CME Group classifies this as personal/educational use → Non-Professional designation applies. Monthly fee: ~$18/exchange/month (firm-covered, trader pays $0.00).
Required content blocks:
Subject: "Stack Trading: Market Data & R|Trader Pro Setup"
Password retrieval instructions — direct to Dashboard GET /platform-credentials after Auth0 OTP login. Password displayed once on UI only. Password MUST NOT appear in email (never emailed).
Agreement signing walkthrough — Step-by-step:
Login to R|Trader Pro using provided credentials
Select classification: Non-Professional
Sign all 4 exchange subscriber agreements: CME, CBOT, NYMEX, COMEX
Close R|Trader Pro and connect trading platform (NinjaTrader 8 / Quantower / etc.) to begin receiving live data
Note: Real-time data feeds remain locked on all connected platforms until signing is complete
Flow 39 — BPS Admin triggers POST /bps/resend-rtrader-instructions for a trader with account_status = 'Active_DMA' (current_level >= 1). Middleware resolves template = 'SES-45', fires RESEND_RTRADER_INSTRUCTIONS webhook to Zapier with this template flag.
Recipient
Futures Live DMA trader (Level 1+) whose CME subscriber agreements have not been signed
CME classification rationale: Live DMA traders operate with the firm's proprietary capital. CME Group legally mandates Professional classification for all proprietary capital trading, regardless of the individual's background. Rithmic's gateway automatically enforces Professional status for Live sub-accounts. Fee: $137.50/exchange/month (firm-covered per BR_5.6.7 allocation). Selecting Non-Professional for a Live funded account is a CME compliance violation — the firm is liable.
Required content blocks:
Subject: "Stack Trading: Market Data & R|Trader Pro Setup"
Password retrieval instructions — direct to Dashboard GET /platform-credentials after Auth0 OTP login. Password displayed once on UI only. Password MUST NOT appear in email (never emailed).
Agreement signing walkthrough — Step-by-step:
Login to R|Trader Pro using provided credentials
Select classification: Professional — mandatory for proprietary capital accounts
Sign all 4 exchange subscriber agreements: CME, CBOT, NYMEX, COMEX
Close R|Trader Pro and connect trading platform (NinjaTrader 8 / Quantower / etc.) to begin receiving live data
⚠️ Compliance warning: selecting Non-Professional on a Live funded account constitutes a CME regulatory violation. If you are unsure, contact support before proceeding.
Note: Real-time data feeds remain locked on all connected platforms until signing is complete
Flow 3B (UC_5.2) — fired after Veriff returns APPROVED webhook AND Middleware completes the 3-step Dots payee creation: (1) POST /v2/users with Veriff legal_name; (2) PUT /v2/users/{id}/addresses with normalized address; (3) POST /v2/flows returns flow_link. Email dispatched with the flow_link. NOT sent at Flow 3A — Dots payee creation does not happen until Veriff APPROVED.
Recipient
Trader whose Veriff KYC was just approved (New Trader branch — Branch A from Flow 3A)
Confirmation that identity verification was successful
flow_link — personalized Dots payout setup URL (session-scoped, generated via POST /v2/flows):
US traders (Billing_Country = 'US'): W-9 tax form pre-filled with Veriff legal_name + address
International traders (Billing_Country ≠ 'US'): W-8BEN tax form pre-filled with Veriff legal_name + address
Clear instruction: payout profile setup is required before the live account can be activated
Expectation-setting: trader will only need to enter TIN (W-9) or DOB + citizenship + signature (W-8BEN) — name and address are already pre-filled
Warning: if Dots rejects phone number and re-issues a re-entry link, no fields are pre-filled — trader must enter all information manually
Security:flow_link is a personalized, session-scoped URL from Dots. Must be included as an HTTPS URL and must NOT be logged in plaintext application logs.
Note: Legal name and address are pre-filled by Middleware before flow_link is generated. Dots does NOT pre-fill TIN (W-9) or DOB (W-8BEN) — trader must enter these on the Dots UI. If Veriff did not extract DOB, the DOB field is left blank for trader to fill in (non-blocking, per CR-20260825-001 DOB null-safe handling).
Dots IRS TIN matching: Runs against the stored profile name (POST /v2/users with Veriff legal_name) — NOT the W-9 payload names. Bug in Dots currently in fix as of 2026-08-25 (CR-20260825-001).
Full Email (Client-confirmed — 2026-10-15):
Note: Client submitted this as "SES-42" but template key Dots_Payout_Setup matches this entry (SES-29). No new SES entry created — content applied here.
Your identity verification is approved. You have one final compliance step before we provision your Level 1 live trading credentials: set up your payout profile and submit your regulatory tax documentation.
Payout Profile Setup
Configure your payout methods and authorize future earnings disbursements by signing the appropriate tax form:
US Traders: Submit Form W-9
International Traders: Submit Form W-8BEN
[Set Up Payout Profile →](link: dots_onboarding_link)
Important Compliance Notes
Do Not Alter Pre-filled Information: Your legal name and standardized address are pre-populated directly from your verified identity documents to ensure global regulatory compliance. Modifying these fields will trigger automated verification failures and immediately block your account activation.
Ensure Accuracy of Manually Entered Information: If any required information is not pre-filled, ensure that all manually entered details are accurate and match your legal information, verified identity documents, and the email address registered on our platform. Any discrepancies may result in verification failures or delays in account activation.
Sequential Validation: Your live trading credentials will not be issued until your payout profile status is officially marked as Active and Payable.
If you encounter issues with address verification, contact support@stacktrading.com immediately.
Flow 12 — The "Zombie" Protocol. Cron hằng ngày 02:00 AM Central quét last_trade_date < (Today − 30) → broker API tắt toàn bộ feed (kể cả base CME) → gửi email này.
🚫 Email này KHÔNG có CTA. Nút [Reactivate Market Data] và biến reactivation_url đã được gỡ bỏ (chỉ đạo BA 2026-09-08). Trader bật lại feed chỉ từ dashboard, bằng nút Resubscribe trên từng feed card — email chỉ thông báo và chỉ đường. Lý do gỡ: một CTA duy nhất trong email buộc phải là hành động gộp cho nhiều feed ở nhiều trạng thái thanh toán khác nhau (feed còn trong tháng đã trả thì miễn phí, feed sang tháng mới thì phải checkout), đẻ ra quá nhiều nhánh không cần thiết. Ref: UC_4.17.1 §6.9, BR_4.17.1.26.
📌 Khối POD MENTORSHIP STATUS giữ nguyên như copy hiện tại, render cho mọi trader — không rẽ nhánh theo pod_leader_id (BA chốt 2026-09-08). Khối này nằm trong email market data vì Flow 12 khi tắt feed cũng nhả luôn ghế Pod của trader (giảm Current_Count của Pod Leader, set Pod Status = Inactive_Hold) — Ref: UC_4.17.1 §6.9 bước 5.
Subject: Your market data is paused - 1 click to reactivate
Hello [First Name],
Your live market data has been paused. Because your account has not registered a trade execution in 30 days, we have disabled your active exchange feeds to manage inactive connections.
Your account, evaluation status, and historical data remain exactly where you left them.
WHAT IS PAUSED
Live market data feeds in [Platform_Name]
WHAT REMAINS ACTIVE
Account credentials and terminal login access
Evaluation or funded status
Saved layouts, journals, and trade history
POD MENTORSHIP STATUS
Due to 30 days of inactivity, your active Pod Mentorship seat has been released to the waitlist.
HOW TO RESUME
When you are ready to trade again, open Settings → Market Data Management in your dashboard and switch your feeds back on with the Resubscribe button on each feed.
Note: If your previous Pod Mentor has reached maximum capacity during your absence, you will be placed at the front of the waitlist for the next available mentorship seat.
Flow 22 Path A (customer_vault_id IS NULL) — cron chạy tại EOM−7, sinh invoice gộp và gửi payment link để trader tự thanh toán. Gửi kèm dashboard notification severity WARN, category Billing & Subscriptions.
Recipient
Trader thanh toán bằng APM (không có vault token trên NMI)
📌 Một template duy nhất, KHÔNG tách variant theo tier. Body nêu song song hệ quả của cả 2 tier (Provisional Traders (Levels 1 and 2) và Senior Traders (Level 3 and above)) để trader tự đối chiếu.
📌 Gửi đúng một lần tại EOM−7, không có ladder nhắc lại. Lần liên lạc thứ hai (nếu trader không trả) là email hạ cấp SES-17 ở ngày cuối tháng.
🔗 CTA [Pay Invoice] mở modal Subscribe to Market Data trên dashboard, pre-fill sẵn các feed trader đăng ký gần nhất + phương thức thanh toán gần nhất — không phải portal thanh toán riêng, cũng không phải trang Checkout đứng riêng. Process Payment Webhook bắt payload success → cập nhật market_data_paid_until. Ref: UC_4.17.1 BR_4.17.1.26.
Subject: Action Required: Manual Payment Needed for Market Data
Hello [First Name],
Your market data subscription renews on the 1st of the upcoming month.
Because your account utilizes a non-recurring payment method, we cannot execute an automatic renewal. You must manually settle your open invoice to maintain your data feeds.
[Pay Invoice](link: checkout_link)
Service Interruption Warning
If payment is not captured by the end of the month, your unpaid data feeds will be automatically revoked by the exchange:
Provisional Traders (Levels 1 and 2): Your base CME data feed will be disconnected.
Senior Traders (Level 3 and above): Your premium add-on feeds (NYMEX, COMEX, CBOT) will be disconnected. Your base CME feed is subsidized by the firm and will remain active.
Emails in this section are sent automatically by Freshdesk on behalf of Stack Trading — not dispatched via AWS SES or Klaviyo. Copy is configured in Freshdesk Email Notifications settings (Admin → Email Notifications → Requester Notifications). SotaTek scope: define required content per ticket type; Freshdesk platform handles actual delivery.
Freshdesk built-in: Requester Notifications → New Ticket Created
Trigger
Freshdesk creates a new support ticket for a trader (any path: UC_5.2 DECLINED / attempt-2 escalation, UC_5.8 Live Provisioning Failure, Flow 22 escalation, Flow 38 Discord Bot, or trader submits ticket manually via helpdesk portal). Sent automatically to the ticket requester's email.
Variables:{{ticket.id}} · {{ticket.url}} · [First Name] (Freshdesk requester name field — renders as Hi <name> when name is present; plain Hi, as fallback when absent)
Subject: We've received your support request — Ticket #{{ticket.id}}
Hi {{ticket.requester.name}},
We would like to acknowledge that we have received your request and a ticket has been created.
A support representative will be reviewing your request and will send you a personal response (usually within 1 business day).
To view the status of the ticket or add comments, please visit:
View Ticket
If the button doesn't work, copy-paste this URL in your browser's address bar:
{{ticket.url}}
📌 Note: The <name> placeholder in the original Freshdesk template (Hi <name>) is Freshdesk's default merge tag for the requester's name. Confirm with client whether to use {{ticket.requester.name}} (renders full name) or {{ticket.requester.first_name}} (renders first name only) for the greeting.
All events below are out of SotaTek scope. Middleware emits webhook payload → Klaviyo API. Copy, layout, and delivery timing managed by client marketing team.
Trigger mechanism exception: KLA-02 (Future_Newsletter_Welcome) and KLA-22 (Waitlist_Welcome) are triggered by a direct frontend-to-Klaviyo API call (email + UTM parameters), bypassing the Node.js middleware and Zapier entirely — Ref: UC_1.2.1, UC_2.1.3. All other events in the table below remain middleware/Zapier-routed. Content, layout, and delivery timing for all events remain out of SotaTek scope regardless of trigger mechanism.
ID
Event Key
Lifecycle Context
KLA-01
Cart_Abandonment
Frontend onBlur on email field (Step 5). Recovers high-intent traffic before checkout drop-off.
KLA-02
Future_Newsletter_Welcome
Homepage footer widget subscription. Initial market insights and onboarding content.