[ADMIN] Where are tenant subsites provisioned?

Tenant subsites are auto-created by sj-crm-stripe on successful checkout via the checkout.session.completed webhook.

Flow: Stripe Checkout → webhook fires → SJ_CRM_Stripe_Tenant_Provisioner::create_tenant_site()wpmu_create_blog() with slug from form → sj-crm plugins activated on the new blog → admin user assigned.

Subsites live at sjcrmapp.com/{slug}/. The blog_id and stripe_customer_id are stored together in wpp3_sj_crm_tenants.

[ADMIN] Database table prefix and key tables

Table prefix: wpp3_

Key custom tables:

  • wpp3_sj_crm_tenants — tenant registry (blog_id ↔ stripe_customer_id ↔ plan)
  • wpp3_sj_journal_entries — work log
  • wpp3_ai_task_manager_tasks — pending tasks/ideas
  • wpp3_sj_changelog_entries — release changelog
  • wpp3_sj_sections — section ID registry (sj-sec-XXX)

Subsite-scoped tables use prefix wpp3_{blog_id}_ per WP multisite convention.