Jump to content


  1. The Latest from the WHMCS Team

    1. News & Announcements

      Announcements and mailings we send out will be posted here

  2. WHMCS.Community

    1. Community Announcements

      Our WHMCS Community Announcements with everything from our community rules to updates on making our community more awesome

    2. Introduce Yourself

      Introduce yourself here and be sure to come back to welcome others.

  3. Using WHMCS

    1. Pre-Sales Questions

      Considering purchasing WHMCS but have some questions? Ask them here.

    2. Admin & Configuration Questions

      This is your space for any questions about WHMCS configuration settings.

    3. Installation, Upgrade, and Import Support

      Get help from the community with installing, upgrading and migrating to WHMCS here

    4. Using WHMCS

      Have a question about how something works or need help configuring and using WHMCS? Here's the place to do it.

    5. Troubleshooting Issues

      Use this board to discuss any issues or problems you are encountering. If you think you've found a bug, please report it here

    6. Vendor Discussions

      Discuss Control panels, payment gateways and domain registrars here

  4. WHMCS Showcase

    1. Showcase Your Site

      Customized and integrated WHMCS in some way? Show the WHMCS Community here!

    2. Share Your Best Practices & Tips

      Share your tips and advice to the rest of the WHMCS community.

  5. Developing & Extending WHMCS

    1. Third Party Add-ons

      A place to discuss third party modules, add-ons and extensions for the WHMCS platform.


    2. Service Offers & Requests

      A place to post offers & requests for services related to WHMCS. Rules apply.

    3. Developer Corner

      Integration, customization and module development, if you have questions, ask them here.

    4. Building Modules

      Need help while building an extension? Ask your questions here.

    5. Share Ideas for WHMCS Modules

      Looking for an extension that doesn't exist? Share your ideas and vote on others.

  6. Community Competitions

    1. Competitions

      From time to time we run community competitions this is the place you'll find them

      • No posts here yet
  7. General Discussions

    1. General Discussion

      Board for general conversation, share interests, discuss industry related news, etc...

  8. General Feedback & Assistance

    1. WHMCS.Community Tips & Tricks

      This board provides an overview of some features and functionality that WHMCS.Community provides.  We add new content from time to time.

  9. Club Forums

    1. 14
    2. 513
    3. 452
    4. 103
    5. 64
    6. 54
    7. 6
    8. 2
      • No posts here yet
      • No posts here yet
    9. 52
      • No posts here yet
    10. 1
  • Who's Online   1 Member, 0 Anonymous, 117 Guests (See full list)

  • Member Statistics

    Total Members
    Most Online
    Cláudio Magalhães
    Newest Member
    Cláudio Magalhães
  • Community Statistics

    Total Topics
    Total Posts
  • Popular Contributors

  • Our picks

    • WHMCS.Community Wrapup - April 2019
      Well, just like that another month is done and dusted! With that in mind, it's time to take a look back at WHMCS.Community during April 2019, highlighting some of the most popular content during the month, asking for your feedback and giving a sneak peek of whats ahead for the community.  Feel free to reply to the thread with any questions you have!

      @WHMCS ChrisD
      WHMCS.Community Manager

      WHMCS.Community April 2019 Statistics at a glance:

      393 new members joined WHMCS.Community

      343 new topics where created

      1,462 replies were crafted by WHMCS.Community Members

      WHMCS.Community Leaderboard

      GearHead @brian! leads the board with 52 points. @Kian is in second place with 8 points, rounding out the board in 3rd place with 7 points is @steven99 please continue to the keep the great content coming.  We continue to progress our integration of Reactions into the community Ranking Structure and you'll start to see this gradually roll out over the next little while. 

      On our Blog - Network Issues & Server Status

      Continuing with the review of WHMCS features and functionality this blog looks at our Network & Server Status feature in WHMCS.  The blog takes a deep dive providing some great insights.  Check it out here.

      Popular Content from April

      Thanks for reading!

      That's the WHMCS.Community Wrapup for April 2019!  As always the WHMCS.Community Moderation team are here to assist you please feel free to make a post in the WHMCS.Community Assistance board for private one-to-one discussions or post if you'd like a public discussion please feel free to post in the Feedback board
      • 0 replies
    • Post Reactions - How they help you move up in the community
      You may not have noticed it before, at the bottom of each page is a heart, if you hover over this you'll get another 8 reactions that you can use to give members "Kudos/Thanks/Thumbs up or Down" on the community.  It's available on every post, except for your own.
        • Thanks
        • Like
      • 6 replies
    • WHMCS.Community Wrapup - March 2019 & Your Feedback
      Welcome to the March 2019 Wrapup a look back at the highlights of March, also in this edition - A request for your feedback.

      WHMCS.Community is your community, we want to help ensure we deliver a useful, informative, engaging community for our users and we'd like to hear what you'd like to see on the community, what we're doing well, what's not working so well and anything else you can think of related specifically to WHMCS.Community.
      • 0 replies
  • Topics

  • Posts

    • Hi guys, I use fail2ban on my server. WHMCS is a subdomain on the same server. I am just wondering, what is normally required to be done in fail2ban for whmcs to work with 1. auto-provisioning services on said server and 2. sending email notifications in whmcs through smtp/phpmail?
    • Here is how you offer free domain with hosting package. As for transferred domains I think that you'll need to manually (or automatically with a custom action hook) sync the Next Due Date of the domain in question and its related hosting package this way they will be tied together. When customers transfer their domain to you, the remaining time they have with their current Registrars plays a role in the Expiry Date. Let's suppose that the transferred domain expires in 6 months from now. For generic TLDs the renewal period (1 year) is added to the current expiry date. In other words the domain will expire in 12 + 6 months from now. Technically a customer could transfer a domain that expires in 2025 😀 It happens when you change Registrar frequently. That's why in WHMCS Next Due Date and Expiry Date don't match. That said, what you see in Expiry Date is irrelevant. Even though the domain expires in 2025 your customer must pay you on a yearly basis. In other words Next Due Date is the only thing that you have to care about. You could consider Expiry Date as a "courtesy" date for you and your customers. When it comes to country-code extensions, rules could be different. A lot of TLDs don't give a damn about the remaining time. When the domain is transferred Expiry Date simply is current date + 12 months. Editing Expiry Date makes no sense if you are using Auto-Sync since it will override your changes.
    • This hook should work. <?php use WHMCS\Database\Capsule; add_hook('InvoicePaid', 1, function($vars) { // Retreiving Products/Services from the invoice that has been just paid $HostingItems = Capsule::select(Capsule::raw('SELECT t2.id FROM tblinvoiceitems AS t1 LEFT JOIN tblhosting AS t2 ON t1.relid = t2.id WHERE t1.invoiceid = "' . $vars['invoiceid'] . '" AND t1.type = "Hosting"')); // Foreach Product/Service that has been renewed I send the "Product Renewal Confirmation" (read post below for more details) foreach ($HostingItems AS $v) { $postData['messagename'] = 'Product Renewal Confirmation'; $postData['id'] = $v->id; $results = localAPI('SendEmail', $postData); } }); The hook requires an Email Template to send the renewal confirmation via email. Go to Setup > Email Templates and press Create New Email Template with the following settings: Email Type: Product/Service Unique Name: Product Renewal Confirmation Email Title: Product Renewal Confirmation (feel free to change it) Email Body: (see below - Feel free to customize it) <p>Dear {$client_name},</p> <p>Thank you for your renewal order. Your renewal request for the product listed below has now been completed.</p> <p>Product/Service: {$service_product_name} {if $service_domain} ({$service_domain}){/if}<br />Renewal Length: {$service_billing_cycle}<br />Renewal Price: {$service_recurring_amount}<br />Next Due Date: {$service_next_due_date}</p> <p>You may login to your client area at <a href="{$whmcs_url}">{$whmcs_url}</a> to manage your domain.</p> <p>{$signature}</p> Preview:
    • Today marks a huge milestone for Zomex! As of the 25th of May 2019 we have now been in business for 10 years! I would like to thank each and every one of you for continuing to support Zomex over the years. It has been an absolute pleasure developing templates, providing services and more importantly replying to your support requests over the last 10 years. Zomex is my baby, my passion and my life and it goes without saying that I will continue to dedicate my time and energy to Zomex's continued growth. Together we will take it to the next level, Here's to the next 10 years! To celebrate this huge milestone we have launched our biggest sale yet! For 3 days only starting now you can receive a huge 25% discount on your order using coupon: 10yearanniversary during checkout! View our full announcement: https://www.zomex.com/clients/announcements.php?id=225
    • Not clear why the method is "weird and confusing". Banners are yet another post type and this is the norm for any post type, in that 1 image is entered per post instance. The difference is that the banner type is not displayed as individual pages, hence the need for an output widget which collects data and display as instructed in one or multiple positions/sidebars on one or more pages. The below image shows  single instances of banners with separate database row ID within the same banner category. The banner display widget requests an array and output 4 as instructed. This allows the click and impression tracking function to record per banner item. The widget can select banner items from 1 or multiple categories or by specified IDs.  
    • I get your logic now, however this is a weird and confusing setup.
    • I've written one that interfaces with our switches (although not Cisco the principal is the same) and APCs via SNMP - switchport control works well and is also linked to product suspensions so the switch port is dropped on a server is payment is overdue. It's very much a custom module designed for our own specific needs, but if you get really stuck I can probably help out with something or give some guidance on how to put one together.
    • But I request you not to restrict your customers in such a way. It will be an imposed disaster to your customers, and the UX would hit very severely. Of course, you may have a specific case, but still converting your mobile visitors to this kind of forced desktop view wouldn't fix the problem.
    • Open templates/{YOUR_TEMPLATE}/header.tpl and look for the following meta tag: <meta name="viewport" content="width=device-width, initial-scale=1"> Replace it with: <meta name="viewport" content="{if $loggedin}width=1024{else}width=device-width, initial-scale=1{/if}"> This forces desktop view on mobile devices on all pages to loggedin users. Keep in mind that it doesn't work when resizing browser window on desktop. If you want that to work only with clientarea pages then use this code: <meta name="viewport" content="{if $loggedin AND $filename == 'clientarea'}width=1024{else}width=device-width, initial-scale=1{/if}">  
    • Given that I'm not a master of templates, I'd use this action hook: <?php add_hook('ClientAreaHeadOutput', 1, function($vars) { if ($vars['templatefile'] == 'viewcart') { $RemoveHeader = true; // "true" removes WHMCS header (logo, language picker, login/register, view cart button) $RemoveNavBar = true; // "true" removes WHMCS navbar (Home, Store, Announcements...) if ($RemoveHeader ? $output .= '<style>#header { display:none }</style>' : 0); if ($RemoveNavBar ? $output .= '<style>#main-menu { display:none }</style>' : 0); return $output; } }); add_hook('ClientAreaPageCart', 1, function($vars) { $output['DisplayMyCustomHeader'] = true; // "true" shows your custom header in PageCart return $output; }); Open templates/{YOUR_TEMPLATE}/header.tpl and look for the following statement: {if $templatefile == 'homepage'} Right befire it add the following code: {if $DisplayMyCustomHeader} <div class="home-shortcuts"> <div class="container"> <div class="row"> <div class="col-md-4 hidden-sm hidden-xs text-center"> <p class="lead">How can we help today?</p> </div> <div class="col-sm-12 col-md-8"> <ul> <li><a id="btnBuyADomain" href="domainchecker.php"><i class="fas fa-globe"></i><p>Buy A Domain <span>»</span></p></a></li> <li><a id="btnOrderHosting" href="cart.php"><i class="far fa-hdd"></i><p>Order Hosting <span>»</span></p></a></li> <li><a id="btnMakePayment" href="clientarea.php"><i class="fas fa-credit-card"></i><p>Make Payment <span>»</span></p></a></li> <li><a id="btnGetSupport" href="submitticket.php"><i class="far fa-envelope"></i><p>Get Support <span>»</span></p></a></li> </ul> </div> </div> </div> </div> {/if} And here is the result: Replace the content of {if $DisplayMyCustomHeader}{/if} with your header.

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated