updateMembershipPlan
Update an existing membership plan by ID to adjust pricing, toggle new-signup availability, or change feature flags. Changes apply to new signups; existing members retain original terms.
Instructions
Update a membership plan - Update an existing membershipplan record by ID. Fields omitted are untouched. Writes live data.
Use when: adjusting pricing (monthly_amount/yearly_amount), toggling sub_active (new-signup availability), or changing feature flags like searchable, photo_limit. Changes apply to NEW signups; existing members on this plan keep their original terms unless manually migrated.
Required: subscription_id.
See also: createMembershipPlan (add new), deleteMembershipPlan (remove permanently).
Returns: { status: "success", message: {...updatedRecord} } - the full updated record after changes applied.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| subscription_id | Yes | ||
| subscription_name | No | ||
| monthly_amount | No | ||
| yearly_amount | No | ||
| sub_active | No | Plan availability for NEW signups: - `1` = active (plan appears on public signup pages; new members can join) - `0` = inactive (plan hidden from new-signup flows; existing members on this plan keep it — grandfather behavior) Use this to retire a plan cleanly. Do NOT hack the signup widget markup to hide a plan. | |
| searchable | No | Whether members on this plan appear in public member search results. `1`=visible in search, `0`=hidden. Use this to hide a membership tier from public listings without deactivating billing. | |
| hide_initial_amount | No | Payment-cycle visibility toggle: hide the one-time/initial-amount option from PUBLIC checkout pages. `0`=shown publicly (default), `1`=hidden publicly; when hidden, the cycle is still available when an admin manually creates a subscription inside the BD admin area (admin-only). | |
| hide_monthly_amount | No | Payment-cycle visibility toggle: hide the monthly option from PUBLIC checkout pages. `0`=shown publicly (default), `1`=hidden publicly; when hidden, still available for admin-created subscriptions. | |
| hide_quarterly_amount | No | Payment-cycle visibility toggle: hide the quarterly option from PUBLIC checkout pages. `0`=shown publicly (default), `1`=hidden publicly; when hidden, still available for admin-created subscriptions. | |
| hide_semiyearly_amount | No | Payment-cycle visibility toggle: hide the semi-yearly (6-month) option from PUBLIC checkout pages. `0`=shown publicly (default), `1`=hidden publicly; when hidden, still available for admin-created subscriptions. | |
| hide_yearly_amount | No | Payment-cycle visibility toggle: hide the yearly option from PUBLIC checkout pages. `0`=shown publicly (default), `1`=hidden publicly; when hidden, still available for admin-created subscriptions. | |
| hide_biennially_amount | No | Payment-cycle visibility toggle: hide the biennially (2-year) option from PUBLIC checkout pages. `0`=shown publicly (default), `1`=hidden publicly; when hidden, still available for admin-created subscriptions. | |
| hide_triennially_amount | No | Payment-cycle visibility toggle: hide the triennially (3-year) option from PUBLIC checkout pages. `0`=shown publicly (default), `1`=hidden publicly; when hidden, still available for admin-created subscriptions. | |
| hide_billing_links | No | Visibility toggle for billing/transaction links in the member dashboard for this plan. `0`=show billing links (default), `1`=hide billing links (e.g. free plans or admin-managed-only plans where members shouldn't self-manage billing). | |
| hide_parent_accounts | No | Visibility toggle for parent-account elements when this plan supports sub-accounts. `0`=show, `1`=hide. | |
| hide_reviews_rating_options | No | Visibility toggle for review rating controls on this plan's member profiles. `0`=show ratings UI, `1`=hide ratings UI. | |
| hide_specialties | No | Visibility toggle for specialties/categories section on this plan's member profiles. `0`=show, `1`=hide. | |
| hide_notifications | No | Visibility toggle for notification UI in the member dashboard for this plan. `0`=show, `1`=hide. | |
| subscription_filename | No | Optional URL slug for this plan's public page. Must be site-wide unique — duplicates cause URL routing conflicts. Pre-check with 5 filtered `list*` calls (each `property_value=<proposed>&property_operator==`): `listMembershipPlans`+`subscription_filename` (ignore hits on this plan's own `subscription_id`), `listTopCategories`+`filename`, `listSubCategories`+`filename`, `listWebPages`+`filename`, `listUsers`+`filename`. Any OTHER hit = taken. Safe to leave blank. | |
| custom_checkout_url | No | Optional custom checkout URL for this plan. Stored in `users_meta` (`database=subscription_types`, `key=custom_checkout_url`); MCP wrapper handles EAV upsert on update. Must be unique across all plans. Pre-check: `listUserMeta(database="subscription_types", key="custom_checkout_url")` then client-filter for any row whose `value` matches yours; ignore the row where `database_id` equals this plan's `subscription_id`. Any OTHER hit = taken. Safe to leave blank. | |
| _clear_fields | No | Column names to clear to empty string. Available on every `update*` operation. Works on base columns AND EAV/`users_meta` rows (rows preserved with `value=""`). To actually clear a field you MUST use this parameter — sending the field with `""` alone is a no-op (BD drops empty values). To remove a `users_meta` row entirely, use `deleteUserMeta`. See **Rule: Clearing fields**. Example: `_clear_fields: ["h2", "hero_link_url"]`. |