Platform admin
Managed plans & Calendly CTA
A Managed plan is a high-touch tier where the Pitchbar / Blengi team handles setup, AI training, knowledge-base configuration, and ongoing maintenance for the customer. The visitor doesn't pay online โ they book a call with a sales rep who closes the deal and bills them off-platform.
Under the hood, Managed plans piggyback on the regular Plan model
with one extra knob: cta_type. Set it to
calendly and the pricing card swaps the self-serve
Stripe checkout button for a Book a call link that opens
your Calendly event in a new tab.
Creating a Managed plan
- Open
/admin/plans/create. - Fill in the basics: name (e.g. Managed), monthly
conversation cap (use
0for unlimited), monthly price. - Scroll to the Checkout behaviour card.
- Set CTA type = Book a call (Calendly).
- Paste your Calendly event URL โ for example
https://calendly.com/your-handle/discovery. Use a specific event link, not your profile root, so the visitor lands on a bookable slot directly. - (Optional) Enter a one-time setup fee in your plan currency. When both a setup fee and a monthly price are set, the pricing card renders the dual line "โฌ999.00 setup + โฌ199.00/month" under the headline price.
- Marketing bullets โ list what the plan includes (Full setup, AI training, Knowledge base setup, Lead capture configuration, Ongoing maintenance, Priority support). Max 8 entries ร 80 characters each.
- Save.
What changes vs. a self-serve plan
- Stripe sync is skipped. Calendly plans never get a Stripe Product or Price provisioned โ even if you set a monthly price. The sales rep mints the Stripe Price (or sends a one-off invoice link) manually after the call.
- The PayPal and Razorpay syncs are also skipped
for the same reason. The per-row Sync button on
/admin/plansreturns a friendly "Calendly plans bypass gateway sync" message instead of an error. - The pricing card button is an
<a>withtarget="_blank" rel="noopener noreferrer". It does NOT carry the self-serveinterval=yearquery-string hint โ Calendly would ignore it anyway. - Default for new signups should not be set on a Managed plan. New workspaces auto-attached to a Managed plan would have no Stripe customer or subscription, breaking the billing UI.
Switching an existing plan to / from Calendly
The cta_type column defaults to
stripe_checkout for every existing row, so the
migration is a no-op for self-serve plans. Switching a plan TO
Calendly mid-life is supported: existing subscriptions stay on the
Stripe Price they were minted at, and the public pricing card
immediately swaps to the Book-a-call CTA.
Switching FROM Calendly back to Stripe re-enables the gateway sync.
Hit the per-row Sync button on /admin/plans to mint a
fresh Stripe Product + Price.
Field reference
| Column | Type | Meaning |
|---|---|---|
cta_type |
string(32) |
stripe_checkout (default) | calendly. |
calendly_url |
string(512), nullable |
External Calendly event URL. Required when cta_type=calendly. |
setup_fee_cents |
integer, nullable |
One-time setup fee in minor units. Combined with the recurring price for the dual-line display. |
See also: Plans & Stripe sync for the broader plan CRUD surface.