AddProduct

Adds a product to the system to be available for purchase

Request Parameters

Parameter Type Description Required
action string “AddProduct” Required
name string The name of the product to be added Required
gid int The id of the product group to add the product Required
slug string The friendly name of the product. Will be generated if not supplied. Optional
type string One of ‘hostingaccount’, ‘reselleraccount’, ‘server’ or ‘other’ Optional
stockcontrol bool Set to true to enable stock control on the product Optional
qty int How much of this product is in stock Optional
paytype string The payment type of the product. One of ‘free’, ‘onetime’, ‘recurring’ Optional
hidden bool Should the product be hidden from the client order form Optional
showdomainoptions bool Should the product show the domain registration options. Optional
tax bool Does tax apply to the product. Optional
isFeatured bool Should the product be featured in the Product Group. Optional
proratabilling bool Is pro-rata billing enabled for this product. Optional
description string The description of the product to show on the product listing in the cart Optional
shortdescription string The short description of the product to show in specific areas of the cart. Optional
tagline string The tagline of the product to show in specific areas of the cart. Optional
color string The color to associate with the product in specific areas of the cart. Optional
welcomeemail int The id of the Email Template to use as the welcome email. Product/Service Messages only Optional
proratadate int See https://go.whmcs.com/1981/products#pricing Optional
proratachargenextmonth int See https://go.whmcs.com/1981/products#pricing Optional
subdomain string A comma separated list of subdomains to offer on the domain register page. eg: .domain1.com,.domain2.com Optional
autosetup string When should the product be automatically setup. One of “ (never), ‘on’ (pending order), ‘payment’ (on payment), ‘order’ (on order) Optional
module string The server module system name to associate with the product. eg: cpanel, autorelease, plesk Optional
servergroupid int The server group id used on product creation to associate an appropriate server Optional
configoption1 mixed The first module configuration value Optional
configoption2 mixed The second module configuration value Optional
configoption3 mixed The third module configuration value Optional
configoption4 mixed The fourth module configuration value Optional
configoption5 mixed The fifth module configuration value Optional
configoption6 mixed The sixth module configuration value Optional
order int The order to in which to display on the order form Optional
pricing array The pricing array to associate with the product. Format: $pricing[currencyid][cycle]. See Example. Optional
recommendations array The recommendations array to associate with the product in the following format: ‘id’ => productid, ‘order’ => integer Optional
ondemandrenewalconfigurationoverride bool Whether the product uses custom on-demand renewal settings. Optional
ondemandrenewalsenabled bool Whether on-demand renewals are enabled for the product. Requires $ondemandrenewalconfigurationoverride be set to true. Optional
ondemandrenewalperiodmonthly int The period (in days) during which clients can place early renewal orders for the monthly billing cycle. Requires $ondemandrenewalconfigurationoverride be set to true. Optional
ondemandrenewalperiodquarterly int The period (in days) during which clients can place early renewal orders for the quarterly billing cycle. Requires $ondemandrenewalconfigurationoverride be set to true. Optional
ondemandrenewalperiodsemiannually int The period (in days) during which clients can place early renewal orders for the semi-annually billing cycle. Requires $ondemandrenewalconfigurationoverride be set to true. Optional
ondemandrenewalperiodannually int The period (in days) during which clients can place early renewal orders for the annually billing cycle. Requires $ondemandrenewalconfigurationoverride be set to true. Optional
ondemandrenewalperiodbiennially int The period (in days) during which clients can place early renewal orders for the biennially billing cycle. Requires $ondemandrenewalconfigurationoverride be set to true. Optional
ondemandrenewalperiodtriennially int The period (in days) during which clients can place early renewal orders for the triennially billing cycle. Requires $ondemandrenewalconfigurationoverride be set to true. Optional

Response Parameters

Parameter Type Description
result string The result of the operation: success or error
pid int The id of the newly created product

Example Request (CURL)

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.example.com/includes/api.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
    http_build_query(
        array(
            'action' => 'AddProduct',
            // See https://developers.whmcs.com/api/authentication
            'username' => 'IDENTIFIER_OR_ADMIN_USERNAME',
            'password' => 'SECRET_OR_HASHED_PASSWORD',
            'type' => 'other',
            'gid' => '1',
            'name' => 'Sample Product',
            'welcomeemail' => '5',
            'paytype' => 'recurring',
            'pricing' => array(1 => array('monthly' => 1.00, 'msetupfee' => 1.99, 'quarterly' => 2.00, 'qsetupfee' => 1.99, 'semiannually' => 3.00, 'ssetupfee' => 1.99, 'annually' => 4.00, 'asetupfee' => 1.99, 'biennially' => 5.00, 'bsetupfee' => 1.99, 'triennially' => 6.00, 'tsetupfee' => 1.99)),
            'recommendations' => array(array('id' => 1, 'order' => 0), array('id' => 2, 'order' => 1)),
            'responsetype' => 'json',
        )
    )
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);

Example Request (Local API)

$command = 'AddProduct';
$postData = array(
    'type' => 'other',
    'gid' => '1',
    'name' => 'Sample Product',
    'welcomeemail' => '5',
    'paytype' => 'recurring',
    'pricing' => array(1 => array('monthly' => 1.00, 'msetupfee' => 1.99, 'quarterly' => 2.00, 'qsetupfee' => 1.99, 'semiannually' => 3.00, 'ssetupfee' => 1.99, 'annually' => 4.00, 'asetupfee' => 1.99, 'biennially' => 5.00, 'bsetupfee' => 1.99, 'triennially' => 6.00, 'tsetupfee' => 1.99)),
    'recommendations' => array(array('id' => 1, 'order' => 0), array('id' => 2, 'order' => 1)),
);
$adminUsername = 'ADMIN_USERNAME'; // Optional for WHMCS 7.2 and later

$results = localAPI($command, $postData, $adminUsername);
print_r($results);

Example Response JSON

{
    "result": "success"
}

Error Responses

Possible error condition responses include:

  • You must supply a name for the product
  • You must supply a valid Product Group ID
  • You must supply a valid welcome email ID
  • Invalid product type. Must be one of “hostingaccount”, “reselleraccount”, “server” or “other”
  • Invalid pay type. Must be one of “free”, “onetime” or “recurring”
  • Invalid autosetup value. Must be one of “”, “on”, “order” or “payment”
  • The color must be a valid hexadecimal value.
  • The recommendation product ID is invalid. This must be an existing product ID.

Version History

Version Changelog
1.0 Initial Version
8.3 Added slug parameter