Skip to main content

FAQ and Troubleshooting

This page answers the most common questions about Better Bulk Price and provides a quick diagnostic path for installation, campaign, notification, and execution issues.

Frequently Asked Questions

What pricing rule modes are available?

Better Bulk Price supports three modes:

  • Absolute — sets the new recurring amount to a fixed value for all matched services.
  • Percentage — increases or decreases the current recurring amount by a percentage.
  • Delta — adds or subtracts a fixed monetary value from each service's current recurring amount.

All modes support optional floor, ceiling, and rounding constraints that apply after the main rule is evaluated.

What filters can a campaign use?

Campaigns support the following filter dimensions: product (multi-select), currency, billing cycle, service status (multi-select), price range (min/max), next due date window (after/before), client group, and an explicit service exclusion list. At least one filter must be set.

Can I save reusable campaign templates?

Yes. Better Bulk Price includes a Campaign Templates section where your team can save reusable campaign configurations. A template can store filters, pricing rules, email template selection, and batch settings so you do not need to rebuild similar campaigns every time.

Can I clone an old campaign?

Yes. Any campaign can be cloned into a new draft. Cloning is useful when you want to reuse a real prior campaign configuration while setting a new schedule and review cycle.

What does the financial impact simulator show?

When you preview a draft campaign, Better Bulk Price shows a Financial Impact Summary panel above the service table. It includes:

  • Estimated MRR delta — total monthly recurring revenue change across matched services, normalised by billing cycle.
  • Estimated ARR delta — MRR delta × 12.
  • Unique clients affected — distinct client count (a client with multiple matched services is counted once).
  • Immediate / deferred split — service count and MRR delta for services that can be updated in the current billing window vs. those deferred to a later one.
  • Risk badge — a Low, Medium, or High label based on how broadly and how deeply the campaign affects your service base.
  • Per-currency breakdown — available when matched services span more than one currency.

The same summary (computed over the full frozen target set) is stored at approval time and displayed in the campaign detail view.

How is estimated MRR delta calculated?

Each service's price change is divided by its billing cycle length in months. For example, a +R$6 change on a Quarterly service contributes +R$2/month. Supported billing cycles are Monthly (÷1), Quarterly (÷3), Semi-Annually (÷6), Annually (÷12), Biennially (÷24), and Triennially (÷36). Free Account services contribute R$0/month to the MRR delta.

The figure is an estimate. Actual revenue impact depends on service eligibility timing, renewal patterns, and any account changes between preview and execution.

What does the risk badge mean?

The badge is a heuristic based on two dimensions — breadth (what percentage of all active services in WHMCS the campaign affects) and magnitude (what the average per-service price change percentage is):

  • High — breadth ≥ 20% of active services, or average change ≥ 25%.
  • Medium — breadth ≥ 5%, or average change ≥ 10%.
  • Low — below both medium thresholds.

The badge and the accompanying risk factor bullets are informational. They do not block approval.

Does the financial summary change after approval?

No. The financial summary stored at approval time is a point-in-time snapshot of the frozen target set. It does not update when services change later. This is intentional — it gives you a stable reference for what was planned when the campaign was approved.

Can I execute a campaign in batches?

Yes. Set a Batch Size on the campaign. The executor will process only that many unresolved targets per run.

If you also enable Pause Between Batches, each run stops in paused status after one batch and waits for an administrator to click Resume.

What is a dry run?

A dry run executes the normal target-selection, billing-window, and per-item outcome logic without changing any WHMCS service prices.

Use it to validate a campaign before the real rollout. Dry-run records are labelled clearly in run history and are excluded from real-run idempotency and campaign-completion checks.

Why was my next invoice not repriced?

Better Bulk Price is designed for future-facing service price changes. If a renewal invoice has already been generated for the current cycle, the module does not silently rewrite that invoice.

What can a campaign target?

In the current release, campaigns target WHMCS services only. Domain pricing and addon pricing are outside the scope of this version.

Can I preview a campaign before making it final?

Yes. Draft campaigns can be previewed against live service data before approval.

What happens when I approve a campaign?

Approval freezes the target snapshot for the campaign. From that point forward, the campaign works from the approved target list instead of recalculating a different live service population later.

Does client acknowledgement block the price change?

No. In the current release, acknowledgement is non-blocking. It is recorded for transparency and support review, but it does not automatically prevent a scheduled update.

How are clients informed?

Providers can use two main channels:

  • Client area notices.
  • Email notifications sent through WHMCS.

Can a campaign be cancelled?

Yes. Draft and approved campaigns can be cancelled. Cancellation prevents future execution while preserving the operational history for review.

Why can't I delete a campaign template?

If a template has already been used to create one or more campaigns, Better Bulk Price blocks deletion until those campaigns no longer reference the template. This prevents operators from removing a template that is still needed for audit or operational traceability.

What happens if some services cannot be updated yet?

If a service is no longer eligible for the current billing window, the module can defer it instead of applying the new recurring amount immediately.

Troubleshooting Installation

The module does not appear in Addon Modules

Check the following:

  1. The folder is uploaded to modules/addons/betterbulkprice/.
  2. The main module file is present and readable.
  3. The deployment package was extracted correctly and not nested inside an extra directory level.

Activation fails

Common causes include:

  • Incorrect file placement.
  • Missing PHP compatibility requirements.
  • Database permissions that prevent table creation.

First confirm the requirements in Requirements, then review the WHMCS activity log and server error log for activation errors.

Admin users cannot access the module after activation

Open the addon configuration page and verify that the correct admin roles were granted access.

Troubleshooting Campaign Setup

Preview returns no matching services

Review the selected filters carefully. The most common causes are:

  • Wrong product selection (confirm the correct products are chosen in the multi-select).
  • Wrong currency.
  • Billing cycle mismatch.
  • Service status mismatch (confirm the expected statuses are selected).
  • A price range filter that does not match any service's current recurring amount.
  • A next due date window that excludes all eligible services.
  • A client group filter pointing to an empty group.
  • An exclusion list that removes all otherwise-matched services.

Approval fails unexpectedly

Approval can fail if no services match at approval time, even if an earlier preview had results. Preview uses live data, so the eligible population may have changed before approval.

The wrong services were included

Do not try to reinterpret the approved campaign. Cancel it and create a new campaign with corrected filters.

Troubleshooting Notifications

Clients do not see a notice yet

Confirm these points:

  1. The campaign was approved.
  2. An announcement time was configured.
  3. The announcement time has already been reached.
  4. The WHMCS daily cron has run.

Email notifications were not delivered

Check:

  1. WHMCS mail configuration is working normally.
  2. The campaign announcement time has passed.
  3. The daily cron has run.
  4. The campaign notification records show whether delivery failed.

If WHMCS email delivery is failing for other messages as well, solve the underlying mail transport issue first.

Troubleshooting Execution

The campaign was approved but prices did not change yet

Check the following in order:

  1. The effective time has already been reached.
  2. The WHMCS daily cron ran.
  3. The campaign targets were eligible for the current billing window.

Some services may be deferred when the current renewal invoice has already been generated.

The campaign is paused and the cron is not continuing it

This is expected. A paused campaign is treated as intentionally in progress but blocked for manual review.

Open the campaign detail page and click Resume to dispatch the next batch. If the campaign should run end-to-end without intervention, leave Batch Size empty and disable Pause Between Batches on future campaigns.

Some services changed and others did not

This usually indicates mixed eligibility across the approved target set. Review the campaign execution details for deferred items, failed items, or other recorded outcomes.

A client says the next invoice still has the old price

If that invoice was generated before the service became eligible for the campaign, the old amount can still appear on that invoice. Better Bulk Price does not silently reprice invoices that were already generated.

When to Contact Support

Contact Mimir Tech support when:

  • Activation fails and logs do not make the cause clear.
  • Notifications or cron-driven execution are not running as expected.
  • Campaign outcomes appear inconsistent with the configured filters.
  • You need help validating a production rollout.

Support: https://mimirtech.co/support