Monetization can be accomplished through either a single-package pricing model or multiple-package plans. By default, the module is configured with package plans, but you can activate the pricing mode within the SaaS general settings. The following details and guidelines are applicable to both pricing and package plan modes.
Introduction
The Perfex to SaaS module offers a comprehensive set of features and pricing packages designed specifically for businesses looking to provide CRM functionality to their clients through a Software-as-a-Service (SaaS) model.
The Perfex CRM SaaS module’s price package feature empowers businesses to effortlessly deliver CRM functionality to their clients through a scalable and customizable SaaS model. With flexible pricing, tailored features, and comprehensive management tools, you can efficiently monetize your CRM offering and provide exceptional value to your customers.
Create First Package
- Navigate to the Package Menu option
- Click “New Packages“
- In the New Window you can assign;
- Package Name
- Package Price
- Invoice recurring period, available options 1-12months
- Trial Period, (leave it blank if the package does not offer a trial period)
- Max Number of Instances (Leave it 0 for unlimited).
- Description, here additional features are available other than the modules.
- Tax: select the tax to be applied to the subscription
- Payment mode: select all the payment gateway that can be used for invoices payment on the package
- Client portal app theme: Select a theme for instances presentation. ‘Agency’ is suitable when the allowed instances are greater than one and ‘Single’ should only be used when the instance is one. We give you this option as you might want to set an agency theme and limit instances to 1. This gives room to let the agency knows about the possibility of more instance (i.e upselling)
- Enable/ Disable package: when disabled, the user won’t be able to subscribe.
- Mark as default automatically assigns the package to new tenant registration
- Mark as private: makes the package either visible or invisible to the tenant.
- Modules: use to enable modules accessible in this package.
- Show the modules list on the package info card, this option allows you to have a custom description.
- DB Scheme:
- Use the current active database for all tenants – multitenancy
- Use single database for each company instance. i.e separate database. You wont be shown this option if you current database user has no privilege to create new database
- Use a single database for each company from the pool only.
- Distribute companies’ data among the provided database in the pool – shading
- Advance Settings: Set system and module options that you want to share with companies on this package. Ensure you mark it as ‘Mask’ where necessary i.e., password, API keys, etc.
Masked fields are protected from direct display to companies on the settings form.
Ensure you share necessary modules field like license fields e.t.c Otherwise, your tenant can often see error messages when the assigned module can not validate the license.
“Masked” means the value should display as an asterisk (i.e v***) to the user on the settings input page and not other pages and thus, masking is aimed for only sensitive information such as SMTP password, payment secret keys e.t.c and should be used with caution. This sensitive information are not often displayed on the UI other than the settings form page.
“Enforce” mean the tenant will not be able to make an update to the settings and will be forced to use the super-admin value for such enforced settings. Otherwise, user values take preference when they are provided.
By default, all tenants inherit settings from master admin at the time of seeding the tenant.
Ideally, there are situations where you may need to share certain settings that were not initially included during tenant seeding. This could involve third-party plugin settings or new information added after some tenants have already been deployed. For instance, if you install a module after creating tenants and wish to make the module available to both existing and future tenants, it’s crucial to consider shared settings, particularly those related to license verifications. This will enable you to share third-party license keys and essential configurations with other tenants effectively.
Another scenario is when you wish to share SMTP credentials or other sensitive information with a tenant. By default, such information is excluded during tenant seeding, and you have the option to share them. In such cases, it’s important to mask sensitive details, such as the SMTP password, to prevent direct access by tenants.
Ensure you share necessary module fields like license fields e.t.c Otherwise, your tenant can often see error messages when the assigned module can not validate the license. Read each setting name to make a guess of what is meant for and decide if you want to share it or share, masked or even enforce it. You might want to share and enforce settings containing words like; verification key, last verification, product token, license key, purchase key, etc
Note that this is experimental and you should ensure the masked information works for your needs i.e. hidden away from the user. Settings with less than two characters will not be masked, likewise any of ‘0’, ‘1’, ‘yes’, ‘no’, ‘-‘.
Masking a settings with value matching your crm installation domain or a tenant slug will often lead to a broken settings page. i.e If masking SMTP Host having value of your domain name can cause a broken settings page on tenant instances; you should only mask on neccessity to avoid such scenario.
When using masking feature, we advise disabling any database backup tool for the tenants on a package with masking
Resources Quota
This block allows the Saas super-admin to set limits on Invoices, Credits notes, Clients, Staff, Tasks, Leads, Estimates, Proposals, Contacts, Projects, and Tickets. Also, you can enable your clients to use Subdomains, Custom Domains, Auto approve custom domains.
We have two options;
This setting allows you unlimited power to control your clients access to resources based on your particular business model.
This is how the settings appear from your clients dashboard
Subdomain, Custom Domains, Auto Approve Custom Domain
Subdomains
Tenants on this package will be able to access their instances using a subdomain. This requires that you have a wild card SSL setup on your main domain.
Here is how to create a subdomain on Cpanel
- Login to your Cpanel where your www.companydomain.com is hosted
- Search for Domains >> Subdomains
- Create a new subdomain using the slug you desire e,g crm.comapnydomain.com.
Preferably, we advise you to set up wildcard DSN entry using Wildcard SSL, this will ensure you don’t have to do manual entry for each tenant and the subdomain will be automated.
Custom Domains
Tenants on this package will be able to access their instances using their own custom domain. This requires that you have a catchall/wildcard domain alias and on-demand TLS (i.e. caddy server) setup on your server preferably VPS. Some shared hosting allows adding alias domains manually.
Auto Approve Custom Domains
Enable this option if you have set up on VPS and using on-demand TLS. Otherwise, you will be required to manually approve every custom domain (after which you might have set up the necessary DNS). You will be notified (by email or app notification) on every new custom domain request.