corner black line corner
black line
the Hazel Logo Hazel Enterprise: The Internet Merchandising System The Netsville Logo
start red bar Home News Info Features Examples Purchase Support Contact Us end red bar
Documentation: hazel.config

This is a straight-forward hazel.config reference, merely listing config file fields, their possible values, and effects. You are assumed to have already configured your basic config file.

Be sure you have the latest Hazel before complaining about features which do not work!


ADD_TARGET is the window target for the result of an ADD action in frames mode. If set to DISABLE, behave as if the user was *not* in frames mode. This means respect quiet add, or simply load the view template.


ADJUST_DISCOUNTED_ITEM_PRICE, if true, forces Hazel to make the price of volume-discounted items (via the DISCOUNT field) equal to the quantity divided by the total price. For certain discounts (eg. "Buy 1 get 1 free"), such an interpolated price may be confusing to the shopper.


ALLOWED_EXTENSIONS is a semi-colon delimited list of file extensions. Hazel will always serve .html and .txt files. If you want her to serve other types of text files, add their extensions here. (Hazel will not properly serve binary files, or files which cannot be rendered as HTML; the content type of a served file will always be "text/html".)


ALLOWED_REFERERS defines semicolon-delimited URL prefices which are allowed to pass an explicit client value to Hazel. By default, only HTTPS_CGI_BIN and HTTP_CGI_BIN are authorized to do so.


Set ALLOW_MISSING_SHIPPING_RULES true if you don't want Hazel complaining about missing shipping rules. REMOVED as of 3.216.


Process client ID without any processing, abstraction, or interpretation. REMOVED as of Hazel 4.107 - Hazel sees all clientids as "raw" because MD5 hashes are alphanumeric.


If ALLOW_UNKNOWN_USERS is true, allow an explictly passed userid even if there is no matching userfile.


If ALWAYS_KEEP_SESSION is set to true, allow the hazel cookie and userfile to hang around after the FINISH action


API_CONFIG, if set true, allows Hazel API scripts to set variables in the %HZM namespace, using an "%HZM_FOO:value" line.


API_DIE_ACTIONS is a semicolon-delimited list of those actions which allow an API script to force Hazel to cease execution. (Including DIE, MSG, CROAK, WHINE.)


API_LOG, if true, results in all output (which does not begin with `%HZ' or `!') from a Hazel API script being sent to the hazel.log file, if it exists. You can also log by printing a line of form "!LOG:message".


If BIRTH_ACTION is set to "checkout", perform the checkout action when a login succeeds, rather than speaking the BIRTH_SUCCESS message. Available as of 3.217.


Set BLANK_QUANTITY to "remove" to automatically remove products from the shopping cart that have blank or zero quantities.


The BODY_ATTRIBUTES value will be inserted into the HTML BODY tag of Hazel templates in distributions 3.4+. This provides a simple way for merchants to customize the background and link colors of Hazel pages. No magic here, though--Hazel simply references %HZM_BODY_ATTRIBUTES in her templates. Remember that


BOGUS_EMAIL_DOMAINS is a semicolon-delimited list of the tail end of domains from which you will not accept orders. If a shopper uses an e-mail address ending in one of these domains, the order is refused.


Set the CART_COOKIE_DELIMITER variable to change the delimiter that separates products in the cart cookie. The CART_COOKIE_DELIMITER must be set to a single character. The default is the pipe (|) character.


Set the CART_COOKIE_ENABLED variable to true to enable the cart cookie. The cart cookie is a cookie that lists the users products and quantities and is an alternative to using a userfile.


Set the CART_COOKIE_NAME variable to change the cart cookie name. The default name is "cartcookie".


Set the CART_COOKIE_QUANTITY_DELIMITER variable to change the delimiter that separates the product SKUID from its quantity in the cart cookie. The CART_COOKIE_QUANTITY_DELIMITER must be set to a single character. The default is the carrot (^) character.


Your CAT_DIR is the directory in which your products file, rules, templates, and other catalog support files are located.


CAUGHT_CLIENTS_CHOKE should be set true if you want Hazel to complain about suspicious or invalid cart entries. By default (as of 3.208), she simply re-assigns a valid-id to those shoppers and continues. Unused as of 3.360.


Your CGI_DIR is the location of your Hazel CGI and auxillary CGI such as special payment method interfaces and custom scripts.


ADD_TARGET is the window target for the result of any checkout action (view, checkout, confirm, etc) in frames mode. The default is _top, which will obliterate all existing frames. If set to DISABLE, send no window target information.


If CHECK_CCD is set true, Hazel will disallow credit cards with an expiration date (according to the CREDIT_MONTH and CREDIT_YEAR user input fields) in the past.


If CHECK_CCN is set true, Hazel will check the syntax of credit card entries and reject them if they don't appear valid (according to the "Luhn" algorhythm).


If CHECK_EMAIL is true, Hazel disallows synactically invalid e-mail addresses. This does not guarantee all shopper e-mail addresses will be valid; it merely prevents addresses such as "asdf" from being used.


CHPASS_ACTION is "checkout" if you want a user to be redirected to checkout when a password is successfully changed. Otherwise leave it alone and let the custom stuff in MY_CHPASS handle things. Available as of 3.945.


Set CLIENT_ID_16 to true to use a 16 character Client ID instead of a standard 32 character Client ID. This option is provided for backward compatability. Available as of 4.104


CLIENT_MEMORY controls how Hazel is allowed to remember shoppers. It can be either a semi-colon delimited list of "cookies", "browser", and/or "subs", or "any" if you want to allow everything. We suggest "any". UNUSED as of 3.357.


If CLOSED is set true, any access to Hazel will cause the hazel-cat/templates/custom/closed.html page to be shown, if present. Very handy for temporarily closing ones storefront, eg. for an upgrade. Available as of 3.222.


CMDLINE_ACTIONS is a semicolon-delimited list of actions which are only allowed to be issued from the command line. This is a useful fraud-prevention measure for payment methods which finish _only_ from scripts.


CMDLINE_BADENV is a semicolon-delimited list of environmental variables which indicate a request was _not_ initiated from the command line. You generally should not have to change this.


Set the CMDLINE_FALSE variable to true to disable command-line actions.


CONTEXT_SUBS are obsolete. Please use the SUBST_* fields instead.


If COOKIE_DOMAINS is set, use /only/ those semicolon-delimited domains, ignoring those Hazel derives from HTTP_CGI_BIN and HTTPS_CGI_BIN fields. See EXTRA_COOKIE_DOMAINS for adding domains to Hazel's default. Values can be any URI, full or partial, optionally including paths. (H4 only, 3.956.)


If CUSTOM_SEARCH_FAILED is true, Hazel will use your passed custom template even when a search fails. Normally, as of 3.384, she will use the standard failed.html template instead.


DEFAULT_ACTION determines what Hazel does when given no arguments. It can be either HOME to serve her homepage, or RETURN to serve the last page visited by the shopper. (RETURN is the default, going HOME if it is the shopper's first visit.)


DEFAULT_SEARCH_COMP is used as the default method of comparison for search specifications.


DEFAULT_SEARCH_FIELD is a list of product file fields (separated by semicolons) which should be used as the default match values for a search specification.


DEFAULT_SEARCH_LOGIC is used as the default rule for matching multiple search specifications by Hazel's search engine.


DEFAULT_SEARCH_MAXHITS is the maximum number of search maxes shown per page.


DEFAULT_THEME points to a directory within your hazel-cat/themes directory from which rules/, loops/, /templates products and options will be read. Useful for supporting catalogs with multiple languages. Not recommended for use by beginners, and currently not supported by the HAM's products editor.


DISABLED_CONTEXT_SUBS is obsolete. Please use the SUBST_* fields instead.


If DISABLE_ADD_REDIRECT is true, Hazel will not HTTP-redirect to the VIEW action (to prevent multiple accidental cart additions). Available as of 3.154, DELETED as of 3.375. See ENABLE_ADD_REDIRECT.


If DISABLE_COOKIES is true, Hazel with neither send nor receive cookies.


If DISABLE_HOURLY_PURGES is true, Hazel with not perform any hourly purging tasks.


If DISABLE_PICKUP_REDIRECT is true, Hazel will not HTTP-redirect to the PICKUP action. Available as of 3.154.


If DISABLE_PLUGINS, disable H4 plugins. (H4 only.)


If DISABLE_TARGETS is true, Hazel will not target her content to a particular frame.


Your DOC_DIR is the directory in which your catalog's HTML and other web-presentable content is located.


If DOC_DIR_FOLLOWS_THEME is set true and a theme (or DEFAULT_THEME) has been selected, the serve action will serve files off of hazel-doc/THEME/ roots rather than using the base hazel-doc. Available as of 3.220.


If DOC_ROOT_FOLLOWS_THEME is true, append "themes/THEME" to each %HZU_DOC_* URL, where THEME is the current theme chosen by the shopper, or the default.


If EMAIL_HEADERS is set to true, your rendered e-mail template is sent "raw" to the mail program specified by MAIL_PATH. If not set or 0, Hazel sends subject and recipient headers as defined by Hazel's configuration. If set to -1, Hazel sends her default headers, then dumps the rendered e-mail template. This is useful if you are using a program which requires a "Content-type:" or some other header in order to properly interpret your order e-mail. Be careful -- the wrong value could prevent mail from being sent at all!


If ENABLE_ADD_REDIRECT is true, Hazel will HTTP-redirect to the VIEW action. This prevents shoppers from `accidentally' reloading a shopping cart view and adding an additional quantity of an item. Unfortunately, it sometimes causes problems with the caching mechanisms of some browsers, and with Hazel's client-id checking, so it's off by default. Pick your poison. Available as of 3.375.


If ESCAPE_DICT_SHOPPER is set all inputs from the user will be escaped of any \0, \r, \n, or \x1a (SQL NULL) characters from the string and it escapes (puts a backslash before) any \, ', and " chars in the string. The result is put in DICT_SHOPPER for all user inputs. DICT_SHOPPER_RAW contains the raw unmodified user input and can be accessed using the %HZR_ variables. Available as of 4.142


If EXTRA_COOKIE_DOMAINS, set hazelcookie cookie in all of those. Should be semicolon-delimited list of URI, optionally including paths. (Hazel 3.436/3.949)


If FAST_FGETS is true, Hazel uses the system fgets call rather than her custom routine. This is desirable unless your files are in Mac format, in which case it may cause problems. The best solution is to store your files in PC or Unix format and use this option for a speed improvement. Available as of 3.154.


If FLAT_PASSED_TEMPLATES is true, the value of a passed TEMPLATE will be used as the basename of a template in the root hazel-cat/tempates directory, rather than the preferreed hazel-cat/templates/custom subdirectory.


If FLOCK_DISABLED is true, don't do any file locking.


FLOCK_MAX_TRIES defines how many times Hazel will try to obtain a lock on a file, on systems which support it.


FLOCK_SLEEP_SECONDS tells Hazel how long to wait between attempts to obtain a lock on a file, on systems which support it.


Set FORBID_MISSING_SHIPPING_RULES true if you want Hazel to complain about missing shipping rules files. Available as of 3.216.


FRAMESET_TARGET is the window target for Hazel's frameset template, used when the shopper enteres frames mode. It defaults to _top, to prevent recursive frames-within-frames. If set to DISABLE, send no window target information.


If FRAME_STATUS is set true, Hazel will assume the shopper is in frames mode without regard to whether or not their browser still contains the frameset. Best to keep this set false.


Your Hazel HARDGOODS_KEY is a string which determines for how long this copy of Hazel will function. Without it or a SOFTGOODS_KEY, Hazel will not function at all.


The HAM_ADMIN_NAME variable sets the name of the HAM administrator user. The administrator's name is set to "admin" by default.


The HAM_ADMIN_EMAIL variable sets the email address of the HAM administrator user.


The HAM_IMPORT_FORMAT variable sets the default format for product and order imports. Valid choices are "TAB" for tab delimited or "CSV" for comma seperated. The default input format is tab separated.


The HAM_EXPORT_FORMAT variable sets the default format for product and order exports. Valid choices are "TAB" for tab delimited or "CSV" for comma seperated. Currently the default export format is unused because you can choose the desired export format from the HAM.


Set the HAM_LOG_ACTIONS variable to true to log ham actions to the ham.actions log file.


The HAM_PRODUCT_FIELDS variable is a semi-colon delimited list of product fields that show up inside of the HAM products section when editing a product. The default fields are SKUID;NAME;PRICE;DESC. The HAM_PRODUCT_FIELDS variable is set automatically from the products table in the database in Hazel 4.5 and above.


Set the HAZEL_COOKIE_NAME variable to change the Hazel cookie name. The default Hazel cookie name is "hazelcookie". Available as of Hazel 4.142.


The following are the names of various Hazel CGI files. You should not change these unless you know what you're doing. The first is the name of the Hazel CGI.


Your Hazel serial number is the ten-digit number given to you when you registered Hazel. The keys are compared against this number to unlock Hazel's various abilities.


HAZEL_TIMEOUT is the maximum time, in seconds, a Hazel process is allowed to run. This is a good safeguard against possible (though unlikely) runaway processes, and a default of 60 seconds is hardcoded into Hazel. The minimum value is 10 seconds, and the maximum is 300 (five minutes). This feature is not available for the NT version of Hazel.


HTML_QUOTABLES is a list of special html characters that are converted into html aliases before being stored in your SHOPPER dictionary. The variable HTML_QUOTABLES has been superceeded by HTML_SPECIAL_CHARS. By default the "quotable" html characters are & " ' < and >. You can take out "quotable" chars by setting this variable to a subset of the previously mentioned characters but you cannot add new characters to the list. Set HTML_QUOTABLES to 0 to disable this functionality.


Set HTTPS_ALWAYS true if you plan to serve all catalog pages through a secure server. (Ie. your HTTP_DOC_ROOT and HTTPS_DOC_ROOT and HTTP_CGI_BIN and HTTPS_CGI_BIN fields are the same.)


If HTTPS_AUTO is true, shoppers will automatically be redirected to your secure server upon reaching the checkout stage.


These are the "secure" versions of HTTP_CGI_BIN and HTTP_DOC_ROOT. In many cases, you need only change the beginning of the URL from "http" to "https".


Secure document root location. See HTTPS_CGI_BIN above.


Set HTTPS_ENABLED true when you're ready to use an SSL ("secure", "https") server with Hazel. Otherwise, when a shopper clicks the SECURE buttons in her templates, they will be told you do not support secure transactions. If you don't plan on using a secure server (perhaps you only take orders via printout, COD, or special payment methods), you may safely remove the SECURE buttons from your templates.


Set HTTPS_FAITH true if your secure server cannot reliable indicate its secure state via environmental variables. Set this if Hazel switches your URL to their insecure counterpart, even though the request seems secure. (Observed in AOLServer 2.3.2.)


HTTP_CGI_BIN is the URL for the directory in which your main Hazel.cgi is located. It should not include the name of the Hazel CGI.


HTTP_CONTENT_TYPE should contain a semicolon-delimited list of HTTP status codes for which Hazel should print a "Content-type: text/html" header. Hazel currently recognizes only status codes "204" or "301". This should be used only when advised by Netsville as a solution (workaround) for problems with some web servers.


HTTP_DOC_ROOT is the URL for the directory in which your web content is located.


If HTTP_EXPIRES is -1, Hazel will send no caching instructions. If unset or "0", she will request that browsers not cache the documents she serves. Otherwise, the field is the suggested expiration time of the document in seconds. (Not all browsers will respect these suggestions.)


If HTTP_LASTMOD is true, send the HTTP Last-Modified header for files served from your document root.


HTTP_RECEIPT_EXPIRES defines the number of seconds before the receipt page expires. Defaults to 300 seconds (5 minutes). This is provided so that browsers can print the page without bombing with a "post expired" error, or attempting to reload.


HTTP_STATUS should contain a semicolon-delimited list of HTTP status codes for which Hazel should print a "Status:" header. Hazel currently recognizes only status codes "204" or "301". This should be used only when advised by Netsville as a solution (workaround) for problems with some web servers.


Set the HZEN02_SEED variable to a random 64 bit seed that is used by the <Hazel-Encode> tag with the type="HzEn02" option set to encode passwords.


HZML_PRODUCT_FIELDS is a semicolon-delimited list of fields from the products file that should be treated as HZML an interpereted.


HZML_RULES is a semicolon-delimited list of rules file basenames which should be processed through Hazel's HZML rendering engine before interpreted. This allows you to use Hazel loops and conditionals within your rules. For example, if you want field.rules rendered as HZML, add "field" to the value. Shipping rules are handled specially: to render /all/ shipping rules files as HZML, add the word "shipping" to the value. Experimental.


If HZML_TAG_CHARS is a string consisting of exactly two characters, Hazel will use these as an alternate pair of HZML tag delimiters. That means that if you set this to "[]", you'd use [HAZEL_LOOP] instead of <HAZEL_LOOP>. This is an experimental feature, designed to possibly avoid problems with some WYSIWYG editors rejecting HZML as "invalid" HTML. (Which, of course, it is, but we don't need them telling us that.) Experimental.


Setting INVALID_SKUID to true diables SKUID checking. SKUIDs are normally checked to see if they contain only alphanumeric or the characters allowed by the SKUID_CHARS variable or the default set $-_.!(),{}|\^~[]. Setting the INVALID_SKUID flag to true will disable this check and allow any SKUID. Setting INVALID_SKUID is not recommended. If you need some special SKUID chars set them using the SKUID_CHARS variable. Available as of Hazel 4.142.


The value from the IPT_DTEMPLATE variable is sets the D template section of IPT invoices.


The value from the IPT_FOOTER variable sets the footer of IPT invoices.


The value from the IPT_HEADER variable sets the header of IPT invoices.


The value from the IPT_HTEMPLATE variable is sets the H template section of IPT invoices.


If KEEP_USER_FILES is true, Hazel will write user information according to your kept_shopper.txt template into a kept/ subdirectory of your users directory. Experimental.


Set the LOCKED_FINISH variable to true to lock the cart finish action. If the finish action is `locked' in this way, we nuke the cart and set only those products explicitly passed during the finish action. This to prevent client-id collisions from adding other items to an order while someone else is checking out.


If LOGIN_ACTION is set to "checkout", perform the checkout action when a login succeeds, rather than speaking the LOGIN_SUCCESS message. Available as of 3.215.


MAIL_HOST is the Internet hostname of your mail server. The Windows version of Hazel will use this to send mail.


MAIL_PATH is the path to your server's 'sendmail' program. The UNIX version of Hazel will use this to send mail.


MAIL_PORT can be used to define a custom SMTP port for MAIL_HOST in Win32.


Set MAIL_SHOPPER true if you would like the shopper to receive email confirmation of their order. The format of this email is defined in your shopper_invoice template.


Set the MAINFRAME variable to point to your main frame html template if you are using a framed layout.


If MAXIMUM_ORDER is true, an order total cannot exceed that amount, and Hazel will display the MAXORDER custom message.


If MINIMAL_USER_FILES is set true, only REMOTE_USER, REMOTE_HOST, REMOTE_ADDR, HTTP_USER_AGENT, and HTTP_REFERER variables will be set in the user files.


If MINIMUM_ORDER is set to a positive dollar value, print the minorder when an a shopper attempts to checkout with an order total below that value.


Normally, Hazel checks MINQ and MAXQ per-product quantity limits only during the CONFIRM and FINISH actions. If MINMAX_ACTIONS is set to a semicolon-delimited list of actions, those actions join the list. Available as of 3.131.


If MIN_ORDER_SEQ is greater than the number in hazel-cat/users/orderseq.txt, use it as the new order sequence instead. (Hazel 3.387/3.914.)


Set MISSING_SKUID_DEBUG to an integer greater than 0 to Send a missing SKUID message to the hazel.bug log file when a missing SKUID is encountered.


MISSING_SKUID_MSG will be used as the 'NAME' of an item not found in your products file. Generally useful during the debugging stages when you may have mistyped an SKUID. "%s" will be replaced with the invalid SKU. Deprecated. Use appropriate line in custom.rules instead.


Set the MSIE_APOS_FIX flag to true if you see &apos; instead of apostraphe (') characters in the HAM or in Hazel while using Microsoft Internet Explorer.


MSIE_FRAMES is provided to deal with Microsoft's Internet Explorer's incomplete implementation of the frames specification. Each mode defines Hazel's behaviour when a shopper using MSIE attempts to enter frames mode.


MULTIPLE_INPUT_VALUE_SEPARATOR is available only in special builds of Hazel. The first character of its value is used to separate the values of multiple fields submitted to Hazel. UNUSED as of 3.362.


MY_BIRTH is a script called whenever someone issues the BIRTH action. If it sets %HZH_BIRTH_FAILED, Hazel prints that message (customizable as BIRTH_FAILED in custom.rules, or a templates/custom/birth_failed.html template where %HZM_MESSAGE is replaced with the message). Otherwise, the login is assumed a success and Hazel prints the BIRTH_SUCCESS custom message/template. If you do not have a MY_BIRTH script, you should not use the BIRTH action, as there is currently no hardcoded behaviour for this action. Available as of 3.217.


MY_CHPASS is a script called whenever someone issues the CHPASS action. If it sets %HZH_CHPASS_FAILED, Hazel prints that message (customizable as CHPASS_FAILED in custom.rules, or a templates/custom/chpass_failed.html template where %HZM_MESSAGE is replaced with the message). Otherwise, the password change is assumed a success and Hazel prints the CHPASS_SUCCESS custom message/template. If you do not have a MY_CHPASS script, you should not use the CHPASS action, as there is currently no hardcoded behaviour for this action. Available as of 3.945.


MY_CONFIRM specifies a script to be run when Hazel starts the CONFIRM action.


MY_CREDIT is the name of a Hazel API script to be executed to obtain the total credit (eg. a "rebate") for an order. Credit is deducted from the order total as if cash. The value of %HZT_CREDIT after the script's execution is used as the total order credit. If using this, you should add %HZT_UNCREDITED and %HZT_CREDIT line items before your final %HZT_ORDER line item in at least your payment templates. Available as of 3.146.


MY_DAILY is the name of a script in your hazel-cgi directory which Hazel will run every day. (Usually on the first hit after midnight.)


MY_DISCOUNT is the name of a Hazel API script to be executed to obtain the total discount for an order. The value of %HZT_DISCOUNT after the script's execution is used as the total order discount.


MY_FILTER_CART is a script called when before Hazel deals with any action specified by the customer. It is intended to be used to filter out items which may not be available to the current shopper. For example, a script could output "%HZQ_FOO:0" to set FOO's quantity to zero, then an explanatory message such as "MSG: Sorry, but you aren't allowed to order FOO." Use of MSG quits Hazel immediately after saving client data back to disk, so the (un)selected quantity is preserved.


By default, Hazel calls your MY_FILTER_CART script (if specified) every time she is called, and _always_ during checkout actions (view, checkout, confirm, and any finish action), regardless of the value of this field. If you want her to call the script _only_ during checkout actions, give the MY_FILTER_CART_ACTIONS field a value of "checkout" to prevent Hazel from calling it elsewise. Available as of 3.162.


MY_FINISH is a script called when an order is finished. Multiple scripts may be designated, separated by semicolons.


MY_LOGIN is a script called whenever someone issues the LOGIN action. If it sets %HZH_LOGIN_FAILED, Hazel prints that message (customizable as LOGIN_FAILED in custom.rules, or a templates/custom/login_failed.html template where %HZM_MESSAGE is replaced with the message). Otherwise, the login is assumed a success and Hazel prints the LOGIN_SUCCESS custom message/template. If you do not have a MY_LOGIN script, you should not use the LOGIN action, as there is currently no hardcoded behaviour for this action. Available as of 3.214.


MY_PRODUCTS is a script which should return product info to Hazel in the same format as her products file. Its output is like a products file with s/^/%HZI_/g run over it. If you don't understand that, don't use this.


MY_PRODUCTS_TWEAK is called after the traditional products access method has been used (ie. the products file). Its output is like a products file with s/^/%HZI_/g run over it. If you don't understand that, don't use this. Available as of 3.109.


MY_SHIPPING is the name of a Hazel API script to be executed to obtain the shipping rates for an order. The value of %HZT_SHIPPING after the script's execution is used as the total shipping cost.


MY_TAX is a Hazel API script which should return a "%HZT_TAX_RATE:xx" line, where "xx" is the floating point tax rate applicable to the current order.


MY_WELCOME is a script called whenever Hazel fails to find an existing user file for a shopper. If provided, it should assign %HZE_CLIENT and %HZE_* fields for all stored client information. It allows merchants to develop their own customer tracking and data warehousing mechanisms. Available as of 3.214.


If NO_CONTENT_BODY is set true, Hazel will include a short HTML message along with her usual "quiet add" response header (HTTP 204, if you're interested). You may customize this by adding an "e204.html" template. Hazel shouldn't be sending anything but the status, but some browsers (MSIE < 4.0) require more, and most don't care if you send more.


OFFER_FRAMES is used only by HZML in Hazel's distributed templates. If true, she offers the choice to enter frames mode. It has no other effect on a Hazel catalog.


If OMIT_CLIENT_FROM_HZU_ACTION is true, %HZU_ACTION won't include the client=xxx bit. (H4 only, 3.952, might go away in favor of a full format string.)


OPTIONS_FILE specifies the filename (without the path) of your options file. Available as of Hazel 3.132.


A valid options key allows you to specify options which modify base products entered in the products file. It makes sizes, colors, and other customizable product attributes easy to present and manage.


If OPTION_CODE_DELIMITER is given, use its first character as the delimiter for optioned product SKUID, instead of the default tilde. (H4 only, 3.944.)


ORDERS_DB is the name of the file to which Hazel will append records of the orders you receive. Leave it blank if you'd rather she not keep a record.


If ORDERS_DB_FORMAT is unset or set to "LOG", Hazel will append the result of interpreting your order_format template to the orders file. If set to "TABS", she will interpret each line of that template as a tab-delimited field to be appended to the orders file. This is useful if you plan to import your orders into a database.


ORDER_ID_FORMAT defines the format of each shopper's ORDER_ID. Any HZML tokens may be used. %HZM_ORDER_SEQ is substituted with a number identifying the ordinal sequence of this order.


Hazel will send email to the addresses specified by ORDER_RECIPIENTS when an order is submitted. To change the format of that message, edit your store_invoice template. If you'd rather this email not be sent, leave the ORDER_RECIPIENTS field blank.


ORDER_SUBJECT will be the subject of all mail sent by Hazel.


If PARANOID_REFERER_CHECK is true, re-assign a client-id for any referer which appears not to be from Hazel. This includes the domains in HTTP_* and HTTPS_* config fields, and the semicolon-delimited ones in the %HZM_ALLOWED_REFERERS field.


PLUGIN_EXTENSIONS defines semicolon-delimited file extensions Hazel will recognize as indicating a plugin file. Defaults to .so, .la, .dll. (H4 only.)


PRODUCTS_FILE specifies the filename (without the path) of your products file. Available as of Hazel 3.132.


PRODUCTS_FILE_DELIMITER is the ASCII code of a character which delimits the records in your products file. Try it with a 9 on a tab-delimited products file if like to live on the edge. Otherwise, avoid it. Experimental.


If PROVIDE_HEADERS is true, Hazel will send full HTTP headers as required by nph-* CGI scripts.


PROXIED_BROWSERS is a semicolon-delimited list of user agent substrings which are known to proxy their requests. It is particularly useful to set this to 'WebTV'.


PROXIED_DOMAINS is a semicolon-delimited list of domains which are known to use proxy servers and thus should be exempt from any calculations Hazel performs which depend on the uniqueness of a browser's address. Available as of 3.139.


PROXIED_SUBNETS contains a semicolon-delimited list of IP-address subnets (eg. "216.27.26." known to behave as proxies, eg. for major online services such as AOL.


If QUIET_ADD is set true, nothing happens when a user adds an item to their cart with the ADD action. If it is set to a URL, that URL is loaded.


If RANDOMIZE_URL is true, Hazel will stick random numbers into an %HZU_ACTION token, which could fool the caching systems of some browsers, if you're into that kinda thing.


Set the RAW_COMPLEX_TOKENS to true to stop Hazel from interpreting the inside of curly braces ({}) of complex tokens.


If REDIRECT_BODY is set true, Hazel will send a short (hardcoded) HTML message along with redirection responses containing a link to the new location. Some web servers require this behaviour; some web browsers choke on it. Best to leave it alone.


If REDIRECT_HASHES is true, a page served by a form with a '


REDIRECT_STATUS tells Hazel what HTTP status code to use when she redirects a browser to another location. The hardcoded default is 301. You'll probably not need to change this field.


If REMEMBER_HOSTS is set true (or "browser" or "any" appears in the CLIENT_MEMORY field), Hazel will keep a database of browser information and attempt to match unrecognized shoppers to existing client-id. You can use this in conjunction with CLIENT_MEMORY for finer control over how Hazel "remembers" shoppers.


If REPLACE_EMAIL_HEADERS is true, Hazel will scan e-mail templates (up to the first empty line) for extra e-mail headers of the form "Key: Value". If a header is encountered which has already been set by Hazel, its value will be used instead of the predefined value. This method is preferred over the old EMAIL_HEADERS field, which was an "all or nothing" approach to the problem. Available as of 3.340.


If REQUIRE_COOKIES, Hazel won't allow a passed client-id that was not sent through a cookie, unless it comes over the cmdline. (Hazel 3.436/3.949)


If RESTRICT_CLIENT_CMDLINE is true, Hazel will attempt client authentication even if she was called from the command line. Don't bother this. UNUSED as of 3.362.


If RESTRICT_CLIENT_REFERER is true, Hazel will reject requests which send an explicit `client' field but resulted from a referring URL which was not Hazel. UNUSED as of 3.362.


RESTRICT_COMPLETION should be a semicolon-delimited list of actions by which Hazel will "complete" an order (send mail, append to order log, etc). Those using softgoods may find it useful to set it to FINISH_CYBERCASH, for example, to prevent someone from entering a COD order to grab free software (their email address would still be on file).


If RETURN_BACK is true, the RETURN action will redirect to a page not served by Hazel when appropriate. Available as of 3.135.


Set the ROLL_COMPLEX_TOKENS to true to interpret several complex tokens inside of one set of curly brackes as one token.


RULES_DIE_ACTIONS is a semicolon-delimited list of actions in which Hazel will `die' from a rule action beginning with an exclamation point.


The search key is required for use of Hazel's search features, including the search engine and the QUERY loop.


If you want Hazel to return more than 1000 search hits, define SEARCH_MOST_MATCHES with a larger number. (H4 only, as of beta version 3.959.)


If SEARCH_PARAND is true, Hazel will use a weaker form of AND logic when the search fields are implied via defaults rather than explicitly sent. This allows one to enter "Foo bar baz" as a search spec, and a matching product requires only that all of the words match in /one/ field of a product rather than all.


When a user clicks a SECURE button, Hazel reloads the last action through her secure URL. If SECURE_ACTION is set, Hazel reloads that action instead.


If SERVE_PATH_INFO is true, a URL of the form hazel.cgi/file.html will be interpreted as if it were a SERVE action with an ITEM of file.html. Experimental and volatile.


SHOWREG_CONFIG determines how much extra information is shown when the SHOWREG action is issued. When ON, it can be a considerable debugging aid for Netsville's tech support.


If SLIDE_CLIENT is true, avoid all client authentication measures. UNUSED as of 3.362.


If SLIDE_CLIENT_BROWSER is true, avoid authenticating a client based on whether or not their browser is the same of that recorded by Hazel the last time that client made a request. UNUSED as of 3.362.


If SLIDE_CLIENT_FORMAT is true, allow on `client' field values which do not conform to the standard format (exactly eight digits). Sending such non-conformant values is very bad; leave this field alone and let Hazel complain. UNUSED as of 3.362.


With a valid softgoods key, your catalog can deliver "soft" goods (software, images, sound files, etc) upon purchase.


The value of %HZM_SOFTGOODS_ONLY is used by some checkout templates to mask shipping information. You should probably never have to modify this field.


Set the SKUID_CHARS variable to a list non-alphanumeric characters that are allowed in an SKUID. By default the following characters are allowed in an SKUID: $-_.!(),{}|\^~[]. Alphanumeric characters are always allowed in an SKUID. You can set INVALID_SKUID to true to disable SKUID checking. Available as of Hazel 4.142.


START_PAGE is the name of an HTML file in your DOC_DIR which should be considered your Hazel catalog's "homepage". The default is set to start.html


If STATE_CHECK_DEFAULT is true, we allow client-id of which we are unsure to be accepted by default. If false, reject them and assign a new client-id. Best to just leave this alone, friends.


STOCK_ADJUST_ACTIONS, if present, tells Hazel in which FINISH* actions she should decrement remaining inventory of an item. If not present, she does so in every FINISH* action. Useful if, for example, one wants to avoid deducting stock for PHONE and other delayed methods until the item is actually shipped. If you never want stock adjusted, set it to "disabled" or some other impossible action. (Applies only to H4 inventory plugins.)


If STOCK_AFFECTS_MAXQ is set, MAXQ for each item is set to the lesser of remaining STOCK inventory or an existing MAXQ field. (Applies only to H4 inventory plugins.)


STORE_EMAIL is your store's email address. It must be a single email address; it's used as the sender of any mail Hazel sends, as the recipient of any email errors, and as a "support" email.


STORE_HOMEPAGE is your website's homepage. It can be any URL. It is used as the "X-URL" header in mail sent by Hazel.


STORE_ID is a simple "nickname" for your store. If present, it should be a short (under 12 characters) string consisting of letters, numbers, or underscores. It is not required.


STORE_NAME is your store's name. "Bob's Food", "Joe's Shamu Food". Any string will do.


STORE_PHONE is a string describing how to contact your store by phone. It needn't be in any special format.


If SUBST_BASE is true, Hazel inserts a <BASE HREF> tag pointing to your document root just before a </HEAD> if and only if a previous <BASE> tag was not encountered.


If SUBST_HIGH_BASE is true, Hazel inserts a <BASE HREF> tag pointing to your document root just after the very first opening <HEAD> tag that is encountered.


If SUBST_FORMS is true, Hazel will insert a hidden field with the value of the shopper's client ID before the closing </FORM> tag in your HTML.


If SUBST_FP_HZU is true, Hazel will replace "HTTP://HZU." with "%HZU". This is useful when entering HZML tokens into FrontPage or other WYSIWYG editors which reject them. The "HTTP://HZU." must be all-caps as shown.


If SUBST_FP_PCT is true, Hazel will replace "%25HZ" with "%HZ". Also useful with editors which second-guess you. The "%25HZ" must be all-caps as shown.


If SUBST_HARD_BASE is true, Hazel inserts the BASE tag (a la SUBST_BASE) if and only if a line containing %HZU_DOC_BASE was not encountered.


If SUBST_HZ_CMT is true, Hazel will remove all instances of <!--HZML and HZML--> when she serves a page. This can be used to hide HZML from WYSIWYG HTML editors which would clobber it.


If SUBST_LINKS is true, Hazel will add the current shopper's client ID to each of your links to her CGI.


TEMPLATE_NAME_FORMAT defines the name Hazel uses to access her HTML templates in the root templates director. `%s' is replaced with the template name such as "checkout" or "error". This is used to ease the transition between old-style "hazel_foo.html" templates and the new "foo.html" templates. Older catalogs which will not have this field in their config file will use the internal default of "hazel_foo.html" without breaking.


If TRUST_GROUP is true, anyone in the Unix group as which Hazel runs can read and write a file written by Hazel. This opens potential security holes and should be set false unless you really know what you're doing.


If TRUST_OTHER is true, any user on a Unix system who is not the user or in the group as which Hazel runs can read and write a file written by Hazel. This opens potential security holes and should be set false unless you really know what you're doing.


UNSELECTED_QUANTITY will be used as the default value for HAZEL_PRODUCT, %HZQ_SKUID, or %HZI_QUANTITY when an item has not been selected. If left blank, Hazel will use a "0". If set to "blank" or "empty", the value will be blank. Otherwise, the setting becomes the value.


USER_FILE_AGE determines the expiration date (in days) for Hazel's cookies and temporary shopper data files. If you enter a number greater than or equal to 1800, Hazel will interpret the expiration time as *seconds* (1800 seconds is a half hour). Recommended only for very busy sites which require frequent reaping of user files.


If VIRGIN_OPTIONED_NAMES is true, do not add a parenthetical list of the option notes for optioned products. You can use %HZI_OPTION_NOTES instead to obtain this value, and/or if you decide to mutate the names, you can use %HZI_UNOPTIONED_NAME, %HZI_UNOPTIONED_PRICE and %HZI_UNOPTIONED_WEIGHT to get the original unoptioned values. Available as of 3.151.


WEIGHT_UNITS should be a string describing the weight units used by your catalog. "pounds", "grams", etc. Keep it blank if you have no WEIGHT entries in your products file.

Getting Started HZML Rules Extras Advanced Reference
Products File
Order Reporting
Known Problems
HZML Tokens
HZML Loops
Sales Tax
Input Fields
Search Engine
Optioned Products
Design Tips
Payment Methods
Regular Expressions
Perl API
HTML Basics
CGI and You

Hazel Home - Help Contents - Searchable Knowledge Base - Live Technical Support

black line
corner black line corner