Website Ecosystem Overview
Master reference for how the three Baseworks sites (baseworks.com, practice.baseworks.com, crm.baseworks.com) connect and integrate. Covers the tag-based access layer, CRM automation, and cross-site sync. Program-specific notes are in their respective sub-documents.
Platform Stack
Section titled “Platform Stack”| Node | URL | Role | Automation tool |
|---|---|---|---|
| Portfolio + checkout | baseworks.com | Public site, WooCommerce checkout, primary purchase point | Uncanny Automator |
| Practice platform | practice.baseworks.com | BuddyBoss community + LearnDash LMS, gated content | Uncanny Automator |
| CRM | crm.baseworks.com | FluentCRM, contact records and tags | Fluent Automations |
| WP Fusion | (plugin on baseworks.com and practice.baseworks.com) | Syncs tags and user meta bidirectionally between the two WP sites and the CRM | — |
Terminology note: “CRM” or “CRM site” in this document always means crm.baseworks.com — not baseworks.com or practice.baseworks.com, even though both of those also have FluentCRM installed (for campaign sending and contact sync). When the distinction matters, the site is referred to by its full domain.
Automation tool terminology:
- “Recipe” = an Uncanny Automator workflow on baseworks.com or practice.baseworks.com
- “Fluent automation” = a FluentCRM automation on crm.baseworks.com
- These are different systems. Recipes live in the Uncanny Automator admin; Fluent automations live in FluentCRM → Automations on crm.baseworks.com.
How Tag-Based Access Works
Section titled “How Tag-Based Access Works”The core pattern for all programs:
- Purchase on baseworks.com → WooCommerce order completes
- WP Fusion tag added at the product level (configured per product in WooCommerce product settings)
- Tag syncs to CRM (FluentCRM on crm.baseworks.com) via WP Fusion
- Tag syncs to practice.baseworks.com via WP Fusion’s cross-site sync, either immediately or triggered by the
SYNC Tags to PRACTICE SITEAutomator action - Access unlocked on practice site — BuddyBoss community groups, LearnDash course access, dashboard elements — all gated by WP Fusion tag rules configured on the practice site
Both sites are configured to sync tags via WP Fusion when a user logs in. For situations where a sync is needed mid-session (e.g. a tag changes while a user is active), a set of reusable sync tags are used instead.
When one of these tags is applied to a contact in FluentCRM, a Fluent automation on crm.baseworks.com immediately removes the tag and fires a webhook to the corresponding site (update tags or update meta). The tag acts as a one-shot trigger, not a persistent state.
| Tag | Slug | Function |
|---|---|---|
| SYNC Tags to PRACTICE SITE | sync-tags-to-practice-site | Pushes current tag state to practice.baseworks.com |
| SYNC Tags to BW.COM | sync-tags-to-bwcom | Pushes current tag state to baseworks.com |
| SYNC Meta to PRACTICE SITE | sync-meta-to-practice-site | Pushes user meta fields to practice.baseworks.com |
| SYNC Meta to BW.COM | sync-meta-to-bw.com | Pushes user meta fields to baseworks.com |
These tags are designed to be ephemeral — they are cleaned up by the CRM automation immediately upon application. Uncanny Automator recipes add them as the final step whenever a tag or meta change needs to propagate cross-site immediately.
Key WP Fusion Tags
Section titled “Key WP Fusion Tags”Primer Access
Section titled “Primer Access”| Tag | Slug | Role |
|---|---|---|
| subscription-plan_PRIMER COURSE | subscription-plan_primer-course | Active Primer access. Added on purchase; removed when deadline expires. |
| PRIMER_COMPLETE | primer_complete | Added by WP Fusion when LearnDash Primer Course is complete (set in course settings) when a user completes the Primer curriculum. Triggers the 3→12 month extension recipe. |
| PRIMER_EXPIRED | primer_expired | Scheduled by deadline recipe to be added at the expiry date. Triggers the expiry recipe, which sends notification and removes access. |
| PRIMER_3-to-12-EXTENSION | primer_3-to-12-extension | Added when extension is granted; marks that the user earned the 12-month continuation. |
| PRIMER_manual-extension | primer_manual-extension | Ephemeral trigger tag. Added manually by the team after a personal deadline extension. Triggers recipe 49161, which schedules expiry at the new pb_primer_deadline. Cleaned up immediately by the recipe. |
Study Groups
Section titled “Study Groups”| Tag | Slug | Role |
|---|---|---|
| Study Group - MTL 2026 Winter | study-group---mtl-2026-winter | Unlocks Winter 2026 cohort content on practice site |
| Study Group - MTL 2026 Spring | study-group---mtl-2026-spring | Unlocks Spring 2026 cohort content on practice site |
| Study Group - MTL 2025 | study-group-mtl-2025 | Previous 2025 cohort; retained for historical access |
| Study Group - Course | study-group-course | Outdated — do not use. Was an intermediary tag for in-person session participants with Primer access. Not actively used; pending cleanup. |
Practice Sessions
Section titled “Practice Sessions”| Tag | Slug | Role |
|---|---|---|
| Practice Sessions - MTL 2026 Spring | practice-sessions---mtl-2026-spring | Forum/community access for enrolled participants |
| Track Alumni | track-alumni (ID: 97) | Marks participants who have reached a meaningful threshold of familiarity with the Baseworks method — through any qualifying program (Study Group, Study Lab, intensive, international workshop, Primer completion, or equivalent supervised study). Used to determine eligibility for alumni pricing, certain events, and program access. Does not require Primer completion specifically; covers past students who know the method through other paths. Applied manually by the team. All currently eligible participants are tagged. |
Sync / Operational Tags
Section titled “Sync / Operational Tags”| Tag | Slug | Role |
|---|---|---|
| SYNC Tags to PRACTICE SITE | sync-tags-to-practice-site | Ephemeral — triggers immediate tag sync to practice.baseworks.com via FluentCRM webhook. Cleaned up by CRM automation on application. |
| SYNC Tags to BW.COM | sync-tags-to-bwcom | Ephemeral — triggers immediate tag sync to baseworks.com. Same mechanism. |
| SYNC Meta to PRACTICE SITE | sync-meta-to-practice-site | Ephemeral — triggers immediate user meta sync to practice.baseworks.com. |
| SYNC Meta to BW.COM | sync-meta-to-bw.com | Ephemeral — triggers immediate user meta sync to baseworks.com. |
| bw.com_CUSTOMER | bwcom_customer | Added when a user completes a WooCommerce purchase on baseworks.com. Used to control visibility of WooCommerce account dashboard elements (e.g. hides empty order history on the practice site for users who have only purchased on bw.com). |
| practice_site_CUSTOMER | practice_site_customer | Added when a user completes a WooCommerce purchase on practice.baseworks.com. Same dashboard visibility logic in reverse. |
Uncanny Automator Recipes — Active (baseworks.com)
Section titled “Uncanny Automator Recipes — Active (baseworks.com)”Always-On Recipes
Section titled “Always-On Recipes”| ID | Name | Trigger | Purpose |
|---|---|---|---|
| 40991 | Tag BW.com Customer | Any product purchase (any product) | Adds bw.com_CUSTOMER and SYNC Tags to PRACTICE SITE to every buyer |
| 34997 | Primer Course purchase Tag Sync + BW.com CUSTOMER | subscription-plan_PRIMER COURSE tag added | Syncs Primer tag across sites; adds bw.com_CUSTOMER |
Primer Deadline Management
Section titled “Primer Deadline Management”| ID | Name | Status | Notes |
|---|---|---|---|
| 41083 | [Primer] Deadline Management (3 months) + Email | Active | Main recipe — see below for full flow |
| 45413 | [Primer] Deadline Management (Extension) | Active | Fires when PRIMER_COMPLETE tag added; extends to 12 months |
| 49161 | [Primer] Deadline Management (Manual Extension) | Active | Fires when PRIMER_manual-extension tag added; schedules expiry for manually extended users — see below |
| 45432 | [Primer] Deadline Management (Expiry) | Active | Fires when PRIMER_EXPIRED tag added; removes access and notifies |
| 43264 | [Primer] Deadline Management (2 months) + Email - Study LAB | Deactivated | Study Lab variant (2-month). Deactivated 2026-03-04; Study Labs will be covered by the unified recipe 41083 when Study Lab products are added to the “Primer” WC product tag. |
| 41168 | [Primer] Deadline Management (12 months) + Email | Draft | Legacy; superseded by the 3→12 extension model |
| 41160 | [Primer] Deadline Management (6 months) + Email | Draft | Legacy; superseded |
Study Groups
Section titled “Study Groups”| ID | Name | Status | Notes |
|---|---|---|---|
| 45736 | [MTL-SG26] Assignment Email + QN | Draft | One-off patch: fires when SEND EMAIL - MTL Study Group 2026 - Assignments 1 tag added; sends assignment email. Communication strategy for Spring 2026 not yet designed — see open items. |
Primer Deadline Recipe — Detailed Flow
Section titled “Primer Deadline Recipe — Detailed Flow”Recipe 41083: [Primer] Deadline Management (3 months) + Email
Section titled “Recipe 41083: [Primer] Deadline Management (3 months) + Email”Trigger (unified as of 2026-03-04):
- User purchases any product with the WooCommerce product tag “Primer” (
WCPURCHPRODUCTINTAGtrigger)
This replaces the previous 6 individual product/variation triggers, which have been deactivated. Any product tagged “Primer” in WooCommerce will now trigger this recipe. Study Group products (Winter + Spring) were added to the “Primer” WC product tag on 2026-03-04. Study Lab products should also be added when Study Labs resume.
Note on deactivated triggers: Users who entered this recipe via the old individual triggers prior to 2026-03-04 are unaffected. Their scheduled actions (remove access tag, add PRIMER_EXPIRED) remain queued in ActionScheduler and will fire at their original deadline date regardless of the trigger state.
Actions (in execution order):
| Step | Action | Timing |
|---|---|---|
| 1 | Call add_months_to_timestamp — computes Unix timestamp 3 months from now | Immediate |
| 2 | Update user meta pb_primer_deadline | 15 seconds |
| 3 | Convert deadline timestamp to human-readable date | Immediate |
| 4 | Send “Primer access + deadline” email to user | 3 minutes |
| 5 | Remove tag subscription-plan_PRIMER COURSE | Scheduled for deadline timestamp |
| 6 | Add tag PRIMER_EXPIRED | Scheduled for deadline timestamp |
Steps 5 and 6 are pending/scheduled actions — they sit in the Automator scheduler and fire at the deadline date.
Recipe 45413: [Primer] Deadline Management (Extension)
Section titled “Recipe 45413: [Primer] Deadline Management (Extension)”Trigger: PRIMER_COMPLETE tag is added to user via WP Fusion when the LearnDash Primer course is completed on practice.baseworks.com (configured in the course’s WP Fusion settings tab). WP Fusion on the practice site pushes the tag to FluentCRM immediately (the WPF API queue is disabled — see cross-site-user-sync); the CRM then fires an update_tags webhook to baseworks.com, which is what actually triggers this recipe.
Actions:
- Cancel all scheduled actions for recipe 41083 (clears the original 3-month expiry) 1a. Cancel all scheduled actions for recipe 49161 (clears any manually-set expiry)
- Call
add_months_to_timestamp— computes new deadline (adds 9 months to existingpb_primer_deadline) - Convert existing
pb_primer_deadlineto Unix timestamp - Update user meta
pb_primer_deadlinewith new date - Add tag
PRIMER_3-to-12-EXTENSION - Send extension confirmation email
- Convert new deadline to readable date
- Schedule: Add tag
PRIMER_EXPIREDat new deadline - Schedule: Remove tag
subscription-plan_PRIMER COURSEat new deadline
Recipe 49161: [Primer] Deadline Management (Manual Extension)
Section titled “Recipe 49161: [Primer] Deadline Management (Manual Extension)”Trigger: PRIMER_manual-extension tag is added to a user (added manually by the team after a manual deadline extension).
When to use: When a user’s Primer deadline has expired (or is about to expire) and a personal extension is granted outside the normal purchase/completion flow. The team first manually updates pb_primer_deadline on baseworks.com and syncs it to the CRM and practice site, then adds this tag to put the user back onto automated expiry management.
Manual steps required before adding the tag:
- Update
pb_primer_deadlineuser meta on baseworks.com to the new deadline date - Manually push meta to FluentCRM from baseworks.com WP Fusion (user profile → “Push to CRM”)
- Trigger sync to practice.baseworks.com — add
SYNC Meta to PRACTICE SITEtag in FluentCRM, or use the practice site WP Fusion to pull the user - Verify
course_access_deadline_newon the practice site matches the new deadline - Verify the user has the
subscription-plan_PRIMER COURSEaccess tag (re-add if the expiry recipe already removed it) - Add
PRIMER_manual-extensiontag in FluentCRM
Actions:
- Remove
PRIMER_manual-extensiontag immediately (ephemeral — keeps the tag clean for future reuse) - Schedule: Add
PRIMER_EXPIREDatpb_primer_deadline - Schedule: Remove
subscription-plan_PRIMER COURSEatpb_primer_deadline
When PRIMER_EXPIRED fires, it triggers recipe 45432 (Expiry), which sends the expiry notification email and syncs the access removal to the practice site. The full expiry notification flow runs normally for manually extended users.
Interaction with recipe 45413 (Extension): If the user completes the Primer course before the manual deadline, recipe 45413 fires and cancels the scheduled actions from both recipe 41083 and recipe 49161, then grants the standard 9-month extension from the current deadline.
Recipe 45432: [Primer] Deadline Management (Expiry)
Section titled “Recipe 45432: [Primer] Deadline Management (Expiry)”Trigger: PRIMER_EXPIRED tag is added to user (from scheduled action above)
Actions:
- Send expiry notification email
- Remove tag
subscription-plan_PRIMER COURSE(access revoked) - Send follow-up email
- Add tag
SYNC Tags to PRACTICE SITE(pushes the access removal to the practice platform)
WooCommerce Product Structure — Naming Conventions
Section titled “WooCommerce Product Structure — Naming Conventions”Most programs follow a dual-product pattern: one regular-priced product and one campaign-priced product (used for Meta ad campaigns or early-bird offers). They are identical in terms of access granted — the campaign product is lower-priced.
This means recipe triggers that reference individual products must include both. See the known gap below.
Product Categories in Use
Section titled “Product Categories in Use”| Category | Slug | Active programs |
|---|---|---|
| Online Course | online-course | Primer standalone |
| Installment | installment | Primer installment / campaign plans |
| Study Groups | study-groups | Study Group cohorts |
| Study Labs | study-labs | Study Labs (with and without Primer) |
| Event | event | Open Days, workshops |
| Open Day | open-day | Open Day sub-type |
Known Gaps and Cleanup Items
Section titled “Known Gaps and Cleanup Items”Primer Trigger Unification — Resolved 2026-03-04
Section titled “Primer Trigger Unification — Resolved 2026-03-04”Study Group products (Winter + Spring) tagged “Primer” in WooCommerce. Unified WCPURCHPRODUCTINTAG trigger added to recipe 41083. Individual product triggers deactivated. Recipe 43264 (Study Lab 2-month variant) deactivated — Study Labs will be covered by the unified recipe when they resume. Existing users with pending scheduled actions are unaffected.
Remaining: Add “Primer” WC product tag to Study Lab products when Study Labs are next planned.
Study Group Communication Strategy (Design Needed)
Section titled “Study Group Communication Strategy (Design Needed)”Email communication for Study Group participants is currently fragmented across three channels with no clear separation of concerns:
- Some emails sent via Uncanny Automator recipes (e.g. recipe 45736, draft)
- Some sent as FluentCRM broadcast campaigns
- Some sent via FluentCRM automated sequences
Problem: Participants enroll at different points during a rolling Meta campaign, so sequence timing doesn’t align cleanly. There is no consistent logic distinguishing essential communications (critical information) from supplementary communications (engagement, reminders).
Needed: A coherent communication architecture for Study Group that defines:
- Which emails are essential (must reach every enrolled participant regardless of when they signed up)
- Which are supplementary (can be time-based or engagement-triggered)
- Which system handles each type (Automator, broadcast, or sequence)
This is an open design problem — no action taken yet. Recipe 45736 is a patch and should not be expanded until the broader strategy is defined.
Outdated Tags to Clean Up
Section titled “Outdated Tags to Clean Up”study-group-course— legacy tag, no longer used actively. Verify no content on practice site is gated by it before removing.
Legacy / Draft Recipes to Review
Section titled “Legacy / Draft Recipes to Review”The following recipes are drafts and should be reviewed for deletion or activation when time allows:
- 41168 — [Primer] Deadline Management (12 months) — superseded by extension model
- 41160 — [Primer] Deadline Management (6 months) — superseded
- 40963 — [Primer] Unlimited - Add Tags + Email — draft; role unclear
- 36143 — [Primer] Primer Course Purchase - Access Email — draft; may be duplicate of 41083 email
- 35504 — [Primer] NY Study Lab Purchase - Intro Course Access — draft