Skip to content

Website Ecosystem Overview

Created 2026-03-04
Updated 2026-04-06
Status draft
Tags infrastructureautomationwp-fusionuncanny-automatorwoocommercetechnical

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.


NodeURLRoleAutomation tool
Portfolio + checkoutbaseworks.comPublic site, WooCommerce checkout, primary purchase pointUncanny Automator
Practice platformpractice.baseworks.comBuddyBoss community + LearnDash LMS, gated contentUncanny Automator
CRMcrm.baseworks.comFluentCRM, contact records and tagsFluent 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.

The core pattern for all programs:

  1. Purchase on baseworks.com → WooCommerce order completes
  2. WP Fusion tag added at the product level (configured per product in WooCommerce product settings)
  3. Tag syncs to CRM (FluentCRM on crm.baseworks.com) via WP Fusion
  4. Tag syncs to practice.baseworks.com via WP Fusion’s cross-site sync, either immediately or triggered by the SYNC Tags to PRACTICE SITE Automator action
  5. 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.

TagSlugFunction
SYNC Tags to PRACTICE SITEsync-tags-to-practice-sitePushes current tag state to practice.baseworks.com
SYNC Tags to BW.COMsync-tags-to-bwcomPushes current tag state to baseworks.com
SYNC Meta to PRACTICE SITEsync-meta-to-practice-sitePushes user meta fields to practice.baseworks.com
SYNC Meta to BW.COMsync-meta-to-bw.comPushes 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.


TagSlugRole
subscription-plan_PRIMER COURSEsubscription-plan_primer-courseActive Primer access. Added on purchase; removed when deadline expires.
PRIMER_COMPLETEprimer_completeAdded 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_EXPIREDprimer_expiredScheduled by deadline recipe to be added at the expiry date. Triggers the expiry recipe, which sends notification and removes access.
PRIMER_3-to-12-EXTENSIONprimer_3-to-12-extensionAdded when extension is granted; marks that the user earned the 12-month continuation.
PRIMER_manual-extensionprimer_manual-extensionEphemeral 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.
TagSlugRole
Study Group - MTL 2026 Winterstudy-group---mtl-2026-winterUnlocks Winter 2026 cohort content on practice site
Study Group - MTL 2026 Springstudy-group---mtl-2026-springUnlocks Spring 2026 cohort content on practice site
Study Group - MTL 2025study-group-mtl-2025Previous 2025 cohort; retained for historical access
Study Group - Coursestudy-group-courseOutdated — do not use. Was an intermediary tag for in-person session participants with Primer access. Not actively used; pending cleanup.
TagSlugRole
Practice Sessions - MTL 2026 Springpractice-sessions---mtl-2026-springForum/community access for enrolled participants
Track Alumnitrack-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.
TagSlugRole
SYNC Tags to PRACTICE SITEsync-tags-to-practice-siteEphemeral — triggers immediate tag sync to practice.baseworks.com via FluentCRM webhook. Cleaned up by CRM automation on application.
SYNC Tags to BW.COMsync-tags-to-bwcomEphemeral — triggers immediate tag sync to baseworks.com. Same mechanism.
SYNC Meta to PRACTICE SITEsync-meta-to-practice-siteEphemeral — triggers immediate user meta sync to practice.baseworks.com.
SYNC Meta to BW.COMsync-meta-to-bw.comEphemeral — triggers immediate user meta sync to baseworks.com.
bw.com_CUSTOMERbwcom_customerAdded 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_CUSTOMERpractice_site_customerAdded 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)”
IDNameTriggerPurpose
40991Tag BW.com CustomerAny product purchase (any product)Adds bw.com_CUSTOMER and SYNC Tags to PRACTICE SITE to every buyer
34997Primer Course purchase Tag Sync + BW.com CUSTOMERsubscription-plan_PRIMER COURSE tag addedSyncs Primer tag across sites; adds bw.com_CUSTOMER
IDNameStatusNotes
41083[Primer] Deadline Management (3 months) + EmailActiveMain recipe — see below for full flow
45413[Primer] Deadline Management (Extension)ActiveFires when PRIMER_COMPLETE tag added; extends to 12 months
49161[Primer] Deadline Management (Manual Extension)ActiveFires when PRIMER_manual-extension tag added; schedules expiry for manually extended users — see below
45432[Primer] Deadline Management (Expiry)ActiveFires when PRIMER_EXPIRED tag added; removes access and notifies
43264[Primer] Deadline Management (2 months) + Email - Study LABDeactivatedStudy 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) + EmailDraftLegacy; superseded by the 3→12 extension model
41160[Primer] Deadline Management (6 months) + EmailDraftLegacy; superseded
IDNameStatusNotes
45736[MTL-SG26] Assignment Email + QNDraftOne-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.

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” (WCPURCHPRODUCTINTAG trigger)

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):

StepActionTiming
1Call add_months_to_timestamp — computes Unix timestamp 3 months from nowImmediate
2Update user meta pb_primer_deadline15 seconds
3Convert deadline timestamp to human-readable dateImmediate
4Send “Primer access + deadline” email to user3 minutes
5Remove tag subscription-plan_PRIMER COURSEScheduled for deadline timestamp
6Add tag PRIMER_EXPIREDScheduled 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:

  1. 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)
  2. Call add_months_to_timestamp — computes new deadline (adds 9 months to existing pb_primer_deadline)
  3. Convert existing pb_primer_deadline to Unix timestamp
  4. Update user meta pb_primer_deadline with new date
  5. Add tag PRIMER_3-to-12-EXTENSION
  6. Send extension confirmation email
  7. Convert new deadline to readable date
  8. Schedule: Add tag PRIMER_EXPIRED at new deadline
  9. Schedule: Remove tag subscription-plan_PRIMER COURSE at 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:

  1. Update pb_primer_deadline user meta on baseworks.com to the new deadline date
  2. Manually push meta to FluentCRM from baseworks.com WP Fusion (user profile → “Push to CRM”)
  3. Trigger sync to practice.baseworks.com — add SYNC Meta to PRACTICE SITE tag in FluentCRM, or use the practice site WP Fusion to pull the user
  4. Verify course_access_deadline_new on the practice site matches the new deadline
  5. Verify the user has the subscription-plan_PRIMER COURSE access tag (re-add if the expiry recipe already removed it)
  6. Add PRIMER_manual-extension tag in FluentCRM

Actions:

  1. Remove PRIMER_manual-extension tag immediately (ephemeral — keeps the tag clean for future reuse)
  2. Schedule: Add PRIMER_EXPIRED at pb_primer_deadline
  3. Schedule: Remove subscription-plan_PRIMER COURSE at pb_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:

  1. Send expiry notification email
  2. Remove tag subscription-plan_PRIMER COURSE (access revoked)
  3. Send follow-up email
  4. 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.

CategorySlugActive programs
Online Courseonline-coursePrimer standalone
InstallmentinstallmentPrimer installment / campaign plans
Study Groupsstudy-groupsStudy Group cohorts
Study Labsstudy-labsStudy Labs (with and without Primer)
EventeventOpen Days, workshops
Open Dayopen-dayOpen Day sub-type

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.

  • study-group-course — legacy tag, no longer used actively. Verify no content on practice site is gated by it before removing.

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