DATABASE OVERVIEW
Sections:
Core DB Tables
DB Table Definitions
Illegal Data Values
Items - items database table
ItemsExt - extended items database table
Context Sensitive Content (CSC)
Listings database table
Advertisement System
Eventlog - database auditing table
Automated eventlog archiving
Orders - database table
OrdersPostProc - database table
OrderLineItem - database table
OrderLineItemExt - extended orderlineitems database table
E-Coupon
Table Lock Record
Table Locking Operation
JobQueue - database table
Customers - customers database table
CustomerSID - customers access control database table
Customer Notes - database table
CustomersExt - extended customers database table
Addresses - address database table
EMBroadcast - e-mail broadcast database table
Store Config Table
Database setup
ODBC Database connection
Pin / Multiple DSN DB control
Database operation
Required database columns
Database Maintenance
List of Primary Keys
Data Integrity Test Tool
Database tool for importing the Customers
Database tool for importing the dealers
Database tool for importing Items
Database tool for importing coupons
Database tool for importing store config
Database Tool For Importing Ups Zone File Into Store Config
Database Tool For Importing Ups Price File Into Store Config
Tool For Cloning Items
Database Export job
Database backup / Export job
Blacklisting

The structure of the database can be found in the DB definitions.

It is recommend to use a separate database for each storefront (though this is not required). All storefront databases can (and typically do) reside on the same database server. Microsoft SQL server is the recommended database server, though SendSafe will support any SQL ODBC Compliant database server (some automated setup limitations may occur). Single user, none-relational databases such as Access are not recommended and will not work.

A pair of SQL scripts are provided which build both the SendSafe databases. There is a set of database tools built into SendSafe to make setting up and managing the database easer (Dealer Import Tool, Coupon import tool, and Data Integrity Test Tool. The database contains all the tables needed to implement a full i-commerce store. Some of the  data is not directly used by SendSafe. This data is present in the tables to provide a source of information for using ASP to dynamically build i-catalog html.

For security reasons the credit card number is stored in a separate database named {Creditcard}. This database should have much high security than the customer / order information database. This separation is very important when ASP based web pages are used. This is because for ASP to work, there must be Internet ASP read/write access to the order information database.  You do not want Internet ASP read access to the credit card database (and this is why is it segregated to a completely separate database). The credit card number database should never use the same account(s) that are used for access to the SendSafe customer / order information database.

Note: The credit card number column in the {Orders} table is not filled in with the actual credit card number. It contains a masked number (last 3 digits only).

CORE DATABASE COLUMN DESCRIPTIONS

Column Name Table Name Description
ItemCodeID
[PRIMARY KEY]
{Items} This is a unique number used to identify an item in the SendSafe system. This code number is used to identify items in the {OrderLineItem} table.
SKU {Items}

This the SKU number for an item. This can be any combination of numbers and characters. It is for ASP display purposes and database relation.

All punctuation marks and spaces are illegal except for hyphens "-"

Description {Items} This is a searchable (non-displayed) description for an item. It can be up to 255 characters in length. While the Description is not displayed by the e-store framework (which uses LongDesc instead), it is however a column that is searched for matching phrases by the e-store framework. The Description column is used for searching instead of the longDesc because SQL DB Servers cannot efficiently search the type of free-form data field (nText) used for longDescs. You are advised to replicate the most relevant portion of the longDesc in the Description column. Double quotes are illegal in all entries.
FullName {Items} This is the full name of an item.

This value is used for display in ASP text associated with BuyObjects, Display in Shopping Basket drop down list, and will be included in acknowledgement e-mail and HTML copies of orders. This is the value which will also appear in product browsing search results and showcase pages. The names should be three characters in length or more.

Though legal, for appearance reasons this column should not contain any punctuation marks and abbreviation marks including '&' while double quotes are illegal in all entries.

Older versions of the database support 40 character Fullnames while the latest version of the database supports 255 character fullnames.

NickName {Items} This is a 20 character or less name which can be displayed in ASP test associated with BuyObjects and is displayed within the shopping basket list. The nicknames should be three characters in length or more. Double quotes are illegal in all entries
PriceEa {Items} This is the price each of an item or int he case of quantity pricing the lowest pricing tier. It can be used by ASP when dynamically creating BuyObject code on a web page. It is also used during QuickBuy operations and giftlist operations.
PictureFileA {Items}

This is site relative URL to a picture (jpg/gif) of the product. This entry should not begin with a '/'. This is typically a full scale image. This field is used only by ASP logic to display a picture and by the Database Integrity testing tool.

This field is option. If left null, the e-store framework will run in No-Format mode for this item.

Picture files can be uploaded using a tool found on the Items Admin Page.

The base directory location must be set for the Integrity tool to function correctly. This is the base address of the website AND not the base address of the image file directory. Also see Special Case tool option -O for possible configuration ideas if this database column is to be used to hold thumbnail displays of items.

If you will have a large number of product images, it is recommended that you collect these images in a single subdirectory off the /en/images/ subdirectory. For example: /en/images/productshots/.

If all product images are not the same size then all images must include additional information in the ProductFileA, ProductFileB, & Logo columns. This information tells the system what size the file is…

Example:

Image file named: mycat.jpg
Example for images all the same size:
ProductFileA = en/images/mycat.jpg
Example for images with different sizes:
ProductFileA = "!200!300!en/images/mycat.jpg"
*where 200 = width and 300 = height

PictureFileB {Items}

This is a site relative URL to a picture (jpg/gif) of the product. This entry should not begin with a '/'. This is typically a thumbnail image. This field is used by ASP logic to display a picture and by the Database Integrity testing tool.

Picture files can be uploaded using a tool found on the Items Admin Page.

The base directory location must be set for the Integrity tool to function correctly.

If you will have a large number of product images, it is recommended that you collect these images in a single subdirectory off the /en/images/ subdirectory. For example: /en/images/productshots/.

If all product images are not the same size then all images must include additional information in the ProductFileA, ProductFileB, & Logo columns. This information tells the system what size the file is…

Example:

Image file named: mycat.jpg
Example for images all the same size:
ProductFileA = en/images/mycat.jpg
Example for images with different sizes:
ProductFileA = "!200!300!en/image/mycat.jpg"
*where 200 = width and 300 = height

Category {Items}

This is a category that this specific product fits; for example: Frozen Strawberries might fall into the fruit category. This is used to create ASP generated product indexes. This is a required columns for e-store framework.

Entries in these columns in the Items table will control how your products appear in the browsing pages and search results. Using these settings control how products are grouped and displayed.

Category Column in the DB will be used to control the Category Drop down list. Place product group descriptions or names into this list (i.e. juice, candy bars, etc.). All items with matching ENTRIES will be displayed when that entry is selected from the drop down list. One entry per record row.

Though legal, for appearance reasons this column should not contain any punctuation marks and abbreviation marks including '&'

A number of hidden sort characters can be reseved and setup to control the order that categories appear in if normal alphabetical sorting will not yield the desired results.

One Item Product Categories: A Category name can contain the resevere character "@" which flags the category as containing only a single item. If this flag is present, the e-store framework will go straight to the showcase page from the category page. This flag can be placed anywhere in the name but it is recommended that it be placed at he end of the name so that it does not effect sorting. For information see: One Item Categories

SubCategory {Items}

This is a more specific category that a product fits; for example: Frozen Strawberries might fall into the fruit category and the frozen fruit subcategory. This is used to create ASP generated product indexes. This is a required columns for e-store framework.

Entries in these columns in the Items table will control how your products appear in the browsing pages and search results. Using these settings control how products are grouped and displayed.

Sub-Category DB column will be used to control a Subcategory Drop down list. Place Subcategory names into this list.

Though legal, for appearance reasons this column should not contain any punctuation marks and abbreviation marks including '&'

A number of hidden sort characters can be reseved and setup to control the order that subcategories appear in if normal alphabetical sorting will not yield the desired results.

InformationLink {Items}

This column contains information used by the system to control product browsing and may also be used for option controls:

Basic Syntax:
##column width override!column height override
	  
All columns must be present OR the trailing columns must be null. 
Any other contents will be ignored.

Example:
informationlink = ##3!20 will yield 3 columns x 20 rows
informationlink = ##3! will yield 3 columns x undefined rows

Syntax Value/Result
column width override If set to any value other than zero this will set the number of columns displayed in the current product matrix (this value overrides the e-store framework configuration). At the category and subcategory level this value has not effect. It only affects the matrix once you have drilled down to the product level. The first product encountered will set the results for all products in the list.
column height override If set to any value other than zero this will set the number of rows displayed in the current product matrix (this value overrides the e-store framework configuration). At the category and subcategory level this value has not effect. It only affects the matrix once you have drilled down to the product level. The first product encountered will set the results for all products in the list.

 

QtyInStock {Items} This is the number of items in stock. This field is automatically decremented by SendSafe for each sale. The value should be set to any legal +/- integer value. Do not leave this value set to null (empty entry). See also inventory sales limiting and inventory.
Payloadloc {Items}

This field controls fulfillment. This fulfillment can be either: digital (payload) fulfillment or shippable product fulfillment handled by one of SendSafes fulfillment subsystems.

Leave this field empty for all items that should not be handled by one of SendSafe's fulfillment subsystems.

For digital payload fulfillment, this field is the physical location of digital payload products which are downloaded after purchase. This is not a URL. It is a physical file location that must accessible by the robot. If this field is prefaced with an '@' sign this designates a digital fulfilment plug-in is to be used instead of SendSafe's integrated digital payload system.

This field can contain more than one or more file specification separated by commas. It can accept wild cards and special operators. For more information see Digital Payloads.

For shippable product fulfillment, this field is prefaced with an '#' sign, this designates that this item is to be fulfilled using one of the SendSafe shippable product fulfillment subsystem

This field when used for internal digital payload construction is used in one of two ways to collect the files that will make up a payload (see Option A and Option B). In  Option A this field must contain a complete path and filename (with optional wildcards). In Option B this field must contain only the filename (with optional wildcards).

ProductType {Items} This is a required columns for e-store framework. It has a length of 40 characters or less. The columns places a product into a specific type classification. This column has specific uses and is related to other tables in the database (and used buy the robot for back-office price adjustments). If you are not sure what to do with this column, you can temporarily make it the same as the category.
  • This column is relational to {Coupon} Table's column [ValidProductTypes]
  • This column is used for category quantity pricing i.e. all products of type XYZ are $9.95 (see also DiscountsPlan)

This column can be expanded to 40 chars in length and still be supported by the import tools and the rest of the system. If quantity pricing is not used then this column can be made even longer. For quantity pricing relational links are built between producttypes and pricing keys which are stored in storeconfig.keyword char(40).

Examples of entries in this column are similar to category, and came be things like: games, paperback books, accessories, etc.

Note: Products can be flagged as Mutually Exclusive so that nothing else can be added to a shopping basket if this product in it... for more info see MutuallyExclusive

The product type can contain reserved keywords which further define the handling of this item. These reserved keywords are defined by:

Application("CustomizerItemTag") = I-CUSTOMIZER
Application("QuoteItemTag") = I-QUOTE
Application("RMAItemTag") = I-RMA
grouped quantity pricing = {1}
fixed quantity pricing = ##
deplexing lineitem = $DF$
DRM Unlock Code = $DRM$
Display this agreement file = $DDA=abc$
Flags item as a listing = $LST=1$ ... $LST=4$
Disable Add-to-WishList = $NW$

The product type can contain reserved syntax which defines the handling of this item. The reserved syntaxes are:

Product selection by skin: Bracket the skinname(s) with '/slashes/' if you what this item displayed for a specific skin. You can have multiple skins selected for an item: /skinname1/skinname2/skinname3/. It is recommended that this syntax be appended to the end of the productType.

Product selection by storefront: Bracket the storefront names(s) with '/slashes/' if you what this item displayed for a specific storefront. You can have multiple storefronts selected for an item: /store1/store2/store3/. It is recommended that this syntax be appended to the end of the productType.

Keywords {Items}

This is a set of keywords which are searched by SQL database query to retrieve similar items. All keywords should be delimited beginning and end with '/' characters to allow for simplified SQL searching for whole words. This entry is used by the optional e-store framework when performing standard product searches.

See for information on how the optional e-store framework uses this DB column.

Keywords can also be used for search restrictions

Examples of what this field should look like:

keywords = /apple/fruit/red/

Rules:

  1. bracket all keywords in between /..../
  2. Standardize on not allowing plural words, only singular words

Example SQL:

Select ItemCodeId, Description, Keywords from Items WHERE keywords LIKE '/%apple%/'

Keyword searching can be customized to include context searching of keywords. The key words can be setup with syntax like: /Mapsco=A345/Wallpaper=Green/. The search system is then customized to provide searches by Mapsco or Searches by Wallpaper color. Contact CPrompt for more details on customizing the e-store framework to support context searching.

ChargeSalesTax {Items}

This field indicates whether sales tax can be changed for this item and which sales tax table to use. The determination if sales tax is charges on a specific ordered item is also dependent upon the tax configuration of the robot.

ShipWt {Items} The shipping weight of the product in pounds. This can be 1.25 pounds or 0.05 pounds. This can also be globally changed to ounces, kilograms, tons, or some other unit of weight.
DefaultShipMode {Items}

This is the default shipping mode / method applied to this item. The Fixed/Locked entries codes are for restricting shipping methods on an item by item basis: See shipping default methods and restrictions for more details.

BASIC Default METHODS:
0 = Saturday, 1 = NextDay, 2 = SecondDay, 3 = Ground

FIXED/ LOCKED METHODS:
20 = Saturday, 21 = NextDay, 22 = SecondDay, 23 = Ground

FIXED/ LOCKED OR HIGHER METHODS:
30 = Saturday, 31 = NextDay, 32 = SecondDay, 33 = Ground

FIXED/ LOCKED OR HIGHER WITH GEOGRAPHIC LIMITS:
DefaultShipMode => 1000 THEN Geographic data from table.

Enter an integer value only or Enter NULL for no default. If no default (null) then the storefront shipmode default will apply.

FixedShipCost {Items}

This value can be set to <none> (which disables fixed shippig cost), or a dollars amount that over rides all other shipping cost calculations options, or a '+' prefixed dollar amount which will be added to the normal calculated amount. FixedShipCost is only used if you want to charge a fixed amount or add a surcharge for the product's shipping.

For Fixed cost shipping enter a dollar price (i.e. 5.95 for $5.95). If you want no shipping charges applied for an item then set the fixed shipping cost equal to zero (0). For example if you have a downloaded item for which you do not want shipping costs charged, then setting the FixedShipCost = 0 will accomplish this for you.

Any amount entered in this field will over ride or be added to exception shipping costs table, Zone Shipping costs table, and Ship by Weight & Zone.

AttributeList {Items}

The attributeList column serves two different functions:

  1. It is used to group products for display in the (optional) e-store framework code's showcase page in the e-store framework.
  2. It is used to create a dropdown list of attributes managed by BuyObjects (this function is legacy and not available in the e-store framework without customization).

Grouping Products - Each set of products to be grouped must have exactly the same code-string entered into this field. For groupings to work the control variable attributeGroupingEnabled in the optional e-store framework code must be set = true. Commas are illegal in this entry field.

For grouping of products to work, the "Enable Attribute Edit" option in the storefront config admin page must be set false (0).

Creating Dropdown Lists - Attribute string for this item. This is a legacy function better handled using the e-store framework and Free-Form-Parameters (FFP). This is a list of all valid attributes for this item separated by commas. An example would be: "Plain,Chunky,Extra Chunky". This attribute list is displayed in the Basket drop down list and selected BuyObjects. This value is used to generate ATTRIBUTE parameter for BuyObjects using ASP. The attribute list is also optionally used by the digital payload subsystem in collection of product files. For atrribute lists to work, the "Enable Attribute Edit" option in the storefront config admin page must be set true(1).

AttributeLlist would be used for products where you want the SKU and the price to be the same regardless the color or size or some other attribute. Leave this field empty for all items that do not have an attribute list.

dateadded {Items}

This column should be set to a valid date when a new item is added. This field can be used by ASP list building code to display a list of all new items or it can be used as a parameter for SQL driven product searchs.

This field will also control the display of items in the (optional) e-store framework code. If the date is null then the product will not be displayed in search or browsing results (with the exception of the showcase page). The product can still be purchased (even though it is not displayed on the search and browsing pages). For this dateAdded control to work in the e-store framework code the control variable dateAddedActivationControl = true.

If you only want to restrict display of the product during searches, then used the searchRestrictions value instead of dateadded.

CustomerID
[PRIMARY KEY]
{Customers} This field is a unique number that identifies each customer. This number is automatically generated by SendSafe as orders are placed. This field is used in the {Orders} table to identify the customer that placed a specific order. A single customer record (customer id) may reference an unlimited number of orders (see Customer Order data flow for more information).
AddressID {Customers} This field associates an {addresses} record with a specified customer record. This number and link is automatically generated and maintained by SendSafe as orders are placed (see Customer Order data flow for more information).
NTUserName {Customers} This field may be automatically generated by SendSafe as orders are placed (see Customer User ID and Password  Customer Order data flow for more information). Note: This is not an NT System User Account
NTUserPassword {Customers} This field may be automatically generated by SendSafe as orders are placed (see Customer User ID and Password  Customer Order data flow for more information). Note: This is not an NT System User Account
DiscountPlan {Customers}

This field is used to assign price discounts to specific preferred customers (or club or group buying plans). The discount can be applied to ether all items or items of a specific type of items when used in combination with e-coupons see: RequiredDiscountPlan.

This field can be automatically set to a value defined in the MIMarketingInfo FFP (see discount pricing for details.

This field can be automatically set to a value configured in the storefront.config file when a specific item is purchased (i.e. the item being purchased is a Discount club membership or other programs). This automatic setting is controlled by the CLUB MEMBERSHIP ITEM key word in the storefront.config file.

  1. Discounts are applied through e-store framework product browser.
  2. Discounts are applied through the wishlist page.
  3. Discounts are applied through the past purchase reordering page.
  4. Discounts are often applied by enable/disable of the SpecialPrice field (this is how the product browser works).
  5. Discount plans can be optionally used to control automated issuing of e-coupons (see also: RequiredDiscountPlan)
  6. Discount plans can be used to control selective application of "Buy 1 Get 1 Free Sale" pricing)

You cannot mix SpecialPrice discount with quantity pricing and promotional sale pricing. SpecialPrice discounts will be overridden by either of this alternate pricing schemes. Percent off can be used with quantity pricing.

If coupons are used in combination with a discount pricing plan then the two discounts are combined together. First the discount plan will be applied to the item (this price will be displayed in the basket). After the customer submits the order, discount coupons will be checked and applied to the order further lowering the price. 

For global percent price adjustments, the standard format for this field is:

  • "PERCENT=nn" where nn is the percent discount to apply (i.e. 0.10 = 10%)
  • "SPECIALPRICING" where you which to use the values in the SpecialPricing DB column.

LastPurchaseDate {Customers} This field is automatically adjusted by SendSafe each time a customer purchases an item. This field can be used to track or perform several things:
  • Automatically perform "coupon handouts" via e-mail to customers that have not been back to the store in N months.
  • To trigger automatic purchases of an item. For example the "Book of the Month" club. Where a specific product is automatically sent and billed to a customer if they do not make a book purchase each month.
OrderingPreferences {Customers} This field is used to store ordering preferences for a specific customer. This field is crucial for QuickBuy or other uses in managing orders placed by customer AND not requiring them to provide all the usual information.

Entries in this string are are comma delimited keywords. Keywords currently defined by SendSafe are listed below.

DealerID
[PRIMARY KEY]
{Dealers} This field is a unique number that identifies each dealer, affiliate, or saleman. This number is filled in manually (typically via an ASP entry page, but it can be also done directly to the database). This code is used to track and tally commissions on sales (see Dealer-Salesman for more information).

This code can be dynamically entered as the DEALERID parameter to BuyObjects using ASP html. All BuyObjects support this optional DEALERID parameter. The dealer code is usually selected from data contained in the customer record field AssignedDealerID and is generally regional i.e. Arizona salesman or Dallas Salesman codes.

AddressID {Dealers} This field associates an {addresses} record with a specified dealer record. 
NTUserID {Dealers} This field is NOT automatically generated by SendSafe. Note: This is not an NT System User Account. This field is used to gain access to the commission reporting ASP pages.
NTPassword {Dealers} This field is NOT automatically generated by SendSafe. Note: This is not an NT System User Account. This field is used to gain access to the commission reporting ASP pages.
Activated {Dealers} Boolean 0 or 1. This field is used to indicate if a Dealer is active i.e. permitted to accumulate commissions.
Commission {Dealers} This is the percentage commission that a dealer will receive. This field is used to calculate and report commissions on sales (see Dealer-Salesman for more information).
BusinessIdCode {Dealers} This is a general purpose field that is commonly used to hold a merchants accounting code or ID code for a dealer. This code can be any combination of characters and numbers. This field is not used by SendSafe in anyway, but may be included in ASP generated commission reports as a way of identifying a dealer.

This field may also be used in an SQL query that is generating ASP reports. This would provide an alternate means of listing dealers using a code that is familiar to the accounting department.

TransactionID
[PRIMARY KEY]
{Orders} This is an automatically assigned number. It is used to establish the relationship between an {Order} record and its subordinate {OrderLineItem} records (see Customer Order data flow for more information).
SendSafeTxNum {Orders} This is the orignal TransactionId (Order number). This number will remain the same for cloned {PREFERENCES} orders and basic cloned orders. Subscription orders (which start as a clone) will NOT have the same SendSafeTxNum as the donnor order.
Date {Orders} The date the order was submitted to the system. This date is automatically filled in by SendSafe (see Customer Order data flow for more information). This field is not updated during processing by the Robot (backend system) and will alway represent the date & time that the customer pressed the submit button.
CustomerID {Orders} This field is a unique number that identifies each customer. This code is used to identify the customer that placed this order. This number is automatically generated (as needed) by SendSafe as orders are placed. A single customer record (customer id) may reference an unlimited number of orders (see Customer Order data flow for more information).
StoreCode {Orders} This is the SendSafe storefront name assigned to a merchant. This value is important when SendSafe is running more that one storefront (and all storefronts are sharing a database).
CreditCard {Orders} Due to security reasons, this value is not filled in by SendSafe. Credit card numbers are store in the secured database {CreditCard). This value instead contains a masked credit card number (the last 3 digits only). This field is used for display-only by QuickBuy logic.
CouponNumber {Orders}

This field holds a coupon number if one was used on this Order. This is the CouponNumber which is the lookup key for the {Coupon} table.

Coupon pricing discounts are calculated in the Robot. Coupon discounts do not show up on the web page. Text should be added to the checkout page and the thank you page that indicates the customer will see the coupon adjustments to the price in the acknowledgement e-mail (issued by the robot).

SubTotalItems {Orders} This is a calculated amount which equals the total cost of all the item before sales tax and shipping costs are applied.
SubTotalShipping {Orders} This is a calculated cost for shipping on this order.
SubTotalSalesTax {Orders} This is a calculated cost for sales tax on this order.
TotalAmount {Orders} This is a calculated total cost for this order.
Status {Orders}

This column is set to various status levels by the SendSafe Robot and (or) the ASPGUI. In the case of the ASPGUI this column also displays the status of orders that have not yet been submitted (i.e. the contents of unsubmitted shopping carts).

See also special order types.

Typical ASPGUI mode values are: 

This is a shopping basket under construction
   {UNDER CONSTRUCTION}

This is a completed order
   {COMPLETED}

This is an order which has been submited and accepted, but is not complete (see flags below - typically this is an RMA).
   {REQUEST ACCEPTED}

This is an order that has been submitted, processing by the backend Robot is pending
   {SUBMITTED PENDING}

This is a QuickBuy submitted order, processing by the backend Robot is pending
   {QB SUBMITTED PENDING}

This order contains wishlist items
   {WISHLIST}

Deleted order
   {DELETED}
   *Will not be counted in reports

This order contains preferences which are used for automated form completion for customer orders
   {PREFERENCES}
   *Will not be counted in reports

This order contains subscription preferences which are used for shipping addresses for subscription orders
   {SUBPREFERENCES}
   *Will not be counted in reports

The ASPGUI mode message will also include semicolon delimited additional status messages; exampled are:

  • QBORDER - For QuickBuy submitted orders
  • GIFTORDER - For gift list orders
  • RMA - For RMA Credit orders (See also: RMA Processing)
  • BACKORDERED - This flag is present if any of the lineitems in the order are flagged in the shipmethod column as backordered.
  • RetryStatus=xx - For Orders that had problems and were (or are being) retried due to backend system failures. Retry count is a down counter which starts at 20 (EMGSTRANSACTION_RETRYCNT) and fails when count = 0.
  • Coupon Status - For an order that included a coupon.
  • CaptureAccepted - Charge capture has been completed on order which where mauthonly (charge holds)
  • MAMSelected - Multi-Address-Mode for this order has been selected by the user. This flag is a temporary and may be removed during final processing of this order.

Legacy Information: Typical JavaGUI mode values are:
RECEIVED, PROCESSING, SHIPPED, CLOSED, CANCELLED.

CCTxStatus {Orders} This field is automatically filled in when automated credit card processing is enabled and the transaction has failed or a warning has been generated.

This is a full text message returned from the credit card processor (bank). It is empty if a charge has been approved. Common message you will find in this column are credit card denied and address verification warnings.
ApprovalCode {Orders}

This field is automatically field in when automated credit card processing is enabled. This field contains Approval, declined, or void plus the results of any AVS code.

Examples:
Approved: 21523PNI PNREF=V534421 (AVSC=A)
Approved: Nothing was charged: coupon or item was free.
Declined PNREF=VBVA60543252
Void: PNREF=VBVA60543252

This field may also contain:

  1. AVS Information (Address Verification Codes)
  2. PNREF Transaction Id Numbers (used by VeriSign)
  3. (CHARGEHOLD) flag indicates this is a charge hold and not an authorize + capture.
  4. CaptureAccepted + Approval code for capture.
DealerIDCode {Orders} This field is a unique number that identifies each dealer or salesman. This number is filled in automatically by SendSafe. This code is used to track and tally commissions on sales. 

This code is used to give sales credit to a specific dealer or salesman for this order. 

STDealerIDCode {Orders} This field is a unique number that identifies a 2nd Tier dealer or salesman. This number is only filled in automatically by SendSafe when operating in the CommissionByItems mode. This code is used to track and tally second tier commissions on sales. 

This code is used to give sales credit to a specific dealer or salesman for this order. 

IPAddress {Orders} The IP Address that the order was placed from.
QtyPriceTable {Orders} The Quantity Price table that was used during processing of the prices for this order. This field may not be present in all cases.
CouponAdjustment {Orders} The dollar amount that this order was adjusted by a coupon.
transactionID
[PRIMARY KEY]
{OrdersPostProc} This key matches the TransactionId key used by Orders
Fulfillment {OrdersPostProc} Fulfillment Information about post proeceesed order. If this is an order with a payload then this information is the PayloadURL. Other info will be present for other types of orders.

See also: B2B Processing and RMA Processing
PostProcStatus {OrdersPostProc} This column is set to various status levels by the SendSafe Robot.

Typical values are: 
This order has been completely fulfilled.
   {COMPLETED}

The field can also include semicolon delimited additional status messages; exampled are:

  • E-RECEIPT PROC: - E-Mail Receipt Sent - followed by status: SENT or FAILED
  • PAYLOAD - This order includes a payload
  • FULFILLED - Order has been fully processed (not valid for B2B using plugin)
  • RMA COMPLETE - RMA has been fully processed
  • EXPORTED - The record has been exported to an Integrated Accouting system

See also: B2B Processing and RMA Processing

Serializer {OrdersPostProc} This is a sequential number assigned to every product that is fulfilled and is used for tracking.

See also: B2B Processing

ProcessStep {OrdersPostProc} This is the numeric code of the fulfillment process step completed:


0 - Order processing has been suspended due to a fatal error
1 - Order pending Order Post Processing B2B or In-house fulfillment is pending
2 - Order Fulfillment transmitted B2B or In-house charge capture is pending
3 - B2B has responded with order shipped or In-house charge capture is complete
4 - Ship Acknowledgement e-mail (order fulfillment is complete)
10 - 17 RMA Processing in progress (see RMA Processing)
18 - RMA complete
19 - RMA items set for resale

**null indicates this order is not being processed by an automated fulfillment system.

See also: B2B Processing and RMA Processing

AcklFulFillmentCompleted {OrdersPostProc} This column is the date and time that a FulFillement completed e-mail was sent to customer. This takes the form of either product shipped OR RMA returned items recieved and a refund has been issued.

See also: B2B Processing and RMA Processing

AckRMACheckIssued {OrdersPostProc} This column is the date and time that an "RMA Check" or "Charge Credit/Void" e-mail is sent to the customer (such as an adjusted trade offer) informing them that the RMA process or Order Cancellation has a problem AND that they need to check the RMA order and respond.

This column is filled in when an RMA is complete OR an order has been cancelled (credit or void)

See also: RMA Processing

NagIssued {OrdersPostProc} This column is date and time that a NAG e-mail was issued to the customer to remind them that they have an RMA pending and that the returns have not been recieved yet. The specific content of this message is configurable.

See also: B2B Processing and RMA Processing

LineItemID
[PRIMARY KEY]
{OrderLineItem} This field is a unique number that identifies each {OrderLineItem} record. This number is automatically generated by SendSafe as orders are placed. 
TransactionID {OrderLineItem} This is an automatically assigned number which links a {OrderLineItem} record back to its {Order} record (see Customer Order data flow for more information).
ItemCodeID {OrderLineItem} This is a unique number used to link this {OrderLineItem} record back to an {Items} record which identifies the product ordered in the record.
ItemParameter {OrderLineItem}

If using the e-store framework, this value will contain an abreviated displayable string which contains the first N FFP values. This string is displayed in the basket and can be optionally used elsewhere. This string is limited to 60 chars and therefore may not contain all FFP parameters.

This string may also contain the keyword "{GIFTLIST SEED}" if this line item is a gift list entry.

This string may also contain an alternate price for delayed purchases if set to anything other than empty OR "none" (the ascii word).

For custom coded pages, this field is populated by the string entered into the ATTRIBUTE parameter when calling addItemToCart() or entered into the ATTRIBUTE form field when posted to addBasket.

If the e-store framework is not used AND instead widgets which support the attribute list dropdown function are used then this value is the Attribute value (from the attribute list) that the customer chose for this product. This field will be empty if no attributes exist or where chosen.

Quantity {OrderLineItem} This is the quantity of this item that the customer ordered.
PriceEA {OrderLineItem} This is the single unit price for this item that the customer paid. This may not be the same as the PriceEa found in the {Items} record for this item. This PriceEa is the actual price paid and may include discounts (but never includes sales tax or shipping).
ShipMethod {OrderLineItem}

This is the shipping mode chosen by the customer for this item. These values are the same as the default shipping mode.

After fulfillment this field may contain the ship status (i.e. Carrier + Tracking number) for the items if B2B is setup or the store manaually updates this field (See also: B2B Processing) Example:
 SecondDay (1Z90E13W0244261645)
 Ground (1Z90E13W0343221214).

If you are adding tracking information manually, it is very important to always place parentheses around the the tracking number; failure to do so may result in charges not being captured and ship confirmation emails not being sent. The system automatically recognizes the carrier based on the tracking number AND creates the appropriate links to check ship status on the customer's order status page.

Multiple tracking number within a single shipping field is allowed. The syntax is: (TRACKING #)xN where N is the number items assigned to this tracking#. Each tracking number entry + quantity is delimited by a space.

i.e. (TX737847438)x5 (TX263537728)x10 ==> 5 items on this tracking#TX737847438 and 10 item on this tracking#TX263537728

If an item is backordered, it will contain the word "(BACKORDERED)" instead of a tracking number. This field is case sensitive.

This entry may also contain messages which note shipping exceptions. The note will contain information describing the exception handling that occurred on this item. The message is a User Configurable custom message. This field will hold up to 100 characters.

ShiptoAddressID {OrderLineItem} This field associates an {addresses} record (to be used as the shipping address) for this specific item. Each item in an order can have a different shipping address. This number and link is automatically generated and maintained by SendSafe as orders are placed (see Customer Order data flow for more information).
RequiredShipDate {OrderLineItem} This field is used to indicate different shippment related dates depending upon the order status.

For normal order that have not been fulfilled, this field will contain the date that the lineitem was added to the shopping cart. It can be used to ascertain when an item was added to the basket vs. the time the basket was submitted.

For order that have been fulfilled via the B2B or Manual Fulfillment, this field will contain the date that the lineitem shipped.

For RMA return orders, this field will contain the date and time that the items where recieved back at your shipping dock.

AltItemDescription {OrderLineItem}

This field is used for lineitem descriptions. This field is displayed on ascii emailed receipts instead of the items fullname.

This field contain a duplicate of the items fullname plus "where appropriate" additional information about this line item.

For subscription refills this line will include the transactionid# of the original (parent) subscription order (labeled as an so#).

For Sale items where the sale price was a result of a SendSafe controlled "buy one get one free" sale, this field will contain a prefix-string = "Sale Priced /" - example: "Sale Priced / Extra large green shirt." This sale price prefix-string is used by the robot to identify lineitems which have recieved sale pricing.

This field may also contain desposition codes (keywords) defining the condition of the item if this is an RMA Order (See also: RMA Processing) or template identification strings from Bid Templates

OrderFlags {OrderLineItem} The flags that were in effect for this line item. The flags are in a comma delimited string.

NOTP = No PTL

PTL = PTL

MULTIADDR = Multi-Shipping-Address mode

GIFTLIST = This item is part of a gift list

LIMCC = "CAV" (see below)

LIMEC = (see below)

PLSTINS = Line Item entered from PurchaseList page

TSTDUP = item has been checked for prior orders AND prior orders were found. A warning will be displayed.

{BXD}{TTX}{VVX} = RMA Price Adjustment Flags

PLSTINSZERO = Line Item entered from PurchaseList page with zero price (redownload).

ICRMABANDONCARTTICKLE = This is an optional flag which is sometimes used by the I-CRM system to make are lineitem as tickled (i.e.the customer recieved an I-CRM e-mail of some type).

LIMCC limits the types of payments allowed for this order. The flag can be sent in any lineitem by outside code at anytime. The flags are entered as a single string without delimiters and can be set to any combination of:
C = "COD Payment"
A = "American Express"
D = "Discover"
M = "MasterCard"
V = "Visa"

LIMEC can be used to disable E-Coupons for the current order. The flag can be sent in any lineitem by outside code at anytime and it will effect the entire order.

Order flags are often set in BuyObjects (see buy object sample page). The flag is set by POSTING the form field element "ORDERFLAGS" set to the value for the flags. LIMCC can also be set in prior purchase pages by using the ( SetLimCCFlags "VD") subroutine call in the parent page. The Prior Purchase pages will use the order flags from the most recent order. So there is often no need to set any order flags in this page.

Comment {OrderLineItem} Can be a different combinations of comments / messages. This is not customer comments. This field may contain:
  • Gift card messages.
  • FFPs Comment elements.
  • Custom comments added programmatically via FORM.COMMENT field manipulation (SendSafe does not use this option internally)

Conflicts between Gift card messages and other messages exist. If FFP Comments OR Custom Comments are added to this column, these message types will prevent a gift message from being saved to this column. It is not advisable have gift items include FFPs with :Comment: elements.

All FFP comments are tagged with an HTML invisible code of: <!-SYSCOMMENT-> at the beginnning of the comment field and at the end of the system comment field (see also: vbTag - SYSCOMMENTTAG). This tagging is used to prevent overwriting by gift messages.

Note: For customer entered comments please see the [Find Order Notes] button on the order admin page.

CouponNumber {Coupons}

This field is a unique code number that identifies each {Coupons} record. This number can be an combination of characters and numbers. This coupon number must be a minimum of 8 characters and no more than 100 characters in length. This number can only exist once in a database.

If this field contains the reserve word prefix "QBC-" then this is a QuickBuy Coupon.

If this field contains the reserve word prefix "AEC-" then this is a Automated E-Coupon Credit line.

For E-Credit lines, this number must be 10 numeric digits (0-9) or more depending upon the configuration of the system.

Active {Coupons} Boolean 0 or 1: This flag indicates if this coupon can be used. This value is automatically set false by SendSafe once this coupon has been completely used. This value can be manually set true again to allow SendSafe to reuse this coupon.

It is advised to never change a coupon's "value rules" since this could have an unexpected effect on previous orders that used this coupon.

TotalDollarValue {Coupons} VALUE RULE: This is the "displayed total dollar value" of this coupon. You must set a total value for all coupons. This value can be made very large to create coupons with near unlimited value (see RemaingDollarValue which is the acutal control of coupon value).

If BuyN equals zero and percent discount equals zero THEN the coupon is worth the dollar value specified by the RemaingDollarValue.

If either of the values BuyN and (or) percent discount are set THEN they control the value of the coupon with RemaingDollarValue setting an upper limit (unless TotalDollarValue value is -1 THEN there is no upper limit).

This value cannot be used in combination with other discounts, if this coupon is to be a simple $x.xx off the order price (including taxes & shipping).

E-Coupons with a TotalDollarValue value = -1 are not limited by the RemainingDollarValue and are "Unlimited Cart Blanche" coupons.

Specific dollar value coupons are not possible if the coupon is to be a "shared coupon" used by any number of people. Shared coupons can only be configured with either Buy X get Y Free or percent off.

RemainingDollarValue {Coupons} VALUE RULE: This is the remaining dollar value of this coupon. You must initially set a remaining value for all coupons.

Typically this value is initially set to the same value as TotalDollarValue. This dollar amount is the actual control over how much value a coupon has over its lifetime of use. This value will override TotalDollarValue resulting in a coupon worth either more OR less than TotalDollarValue.

This field is automatically debited by SendSafe as the coupon is used. This field allows the coupon to be used on more than one order until its value has been used up. Its value is used up once this value equals zero.

E-Coupons with a TotalDollarValue value = -1 are not limited by the RemainingDollarValue and are "Unlimited Cart Blanche" coupons.

BuyN {Coupons} VALUE RULE: This field is used to create a Buy N get X free type of coupon. Set the number of items that need to be purchased to earn free items. Leave this value set to zero if this coupon has specific dollar and (or) percentage percentage off value and not Buy N get X free.

This type of coupon is only applied to individual orders one at a time. As such the discount cannot be spanned across multiple orders. 

This value cannot be used in combination with other discounts.

This form of discount is only valid when the ValidateProductTypes list has been filled out with a single product type. Results will be unpredictable i more than one product type is in the list.

This coupon is treated in terms or tax & shipping the same as a Fixed Dollars Amount coupon AND will cause the price of this item to be deducted from the total amount of the order (after taxes & shipping). i.e. shipping and tax are not included in the value of the coupon.

GetX {Coupons}

VALUE RULE: This field is used to create a Buy N get X free type of coupon. This value indicate how many free items can be ordered once N items have been purchased. Leave this value set to zero if this coupon has specific dollar value and not Buy N get X free. This coupon is only valid for a single order and cannot be spanned across multiple orders.

The value of GetX cannot exceed the value of BuyN (i.e. BuyN=1 and GetX=2 is not allowed and will result in coupons which will not operate as expected

This value cannot be used in combination with other discounts.

BeginDate {Coupons} This is the starting date which controls when this coupon is valid. This field cannot be empty. Legal date ranges must be between midnight, January 1, 1970, to January 18, 19:14:07, 2038
EndDate {Coupons} This is the final date which controls when this coupon is valid. This field cannot be empty. Legal date ranges must be between midnight, January 1, 1970, to January 18, 19:14:07, 2038.

Please note: There is a 48 hour grace period applied to all coupon end dates.

ValidateProductTypes {Coupons}

This is a list of valid items for this coupon. This list can contain items.productTypes, items.ProductCodeId, items.keywords, or a Quota-List. Only one type or ProductCodeId is valid for a given coupon if BuyX GetN free is used. For other coupon this list may contain multiple product types or ProductCodeId separated by a comma OR a single Quota-List. This column is case sensitive; productypes or keywords must match in case.

ProductCodeId entered into the list must be enclosed in angle brackets i.e. <17283>.

keywords entered into the list must be enclosed in slashed i.e. /word/. If the keywords column contains the SKU (as recommened) then coupons can be limited by product sku via the keyword lists.

Quota-List entered into the list by prefacing the list name with a pound-sign (#) i.e. #MYQUOTALISTNAME.

Lists can mix all the methods of item identification except quota-lists i.e. This example includes productTypes, ItemIdCodes, and keywords:

"HOME ELECTRONICS,CAR AUDIO,<8>,<199>,<82>,/sku12345/,/books/"

WARNING! DO NOT Leave this database column empty or NULL.
If you want the coupon to be valid for all products types enter the string "<any>".

UsesLeft {Coupons} This is the number of uses left on this coupon. This value must be set initially to something greater than zero. Every time a coupon is used this value is decremented by one. If this value is zero the coupon is considered no longer valid.
PercentDiscount {Coupons} This value is a discount percent for this e-coupon (entered as whole numbers - no fractions) 10 = 10%, 25 = 25%, etc... This value is applied to the total Order Amount (including taxes & shipping). This value cannot be used in combination with other discounts.

In all cases except Buy One Get One Free coupons, if this value is set to anything other than zero, it is used to calculate the discount with an upper limit set by TotalDollarValue & RemainingDollarValue. This value is not valid for IHC e-credit line accounts (set to 0 or 100 for all IHC accounts).

IssuedTo {Coupons}

This is the e-mail address of the person that this coupon was issued to. This entry may be left blank. If this entry is filled in during coupon creation then the e-coupon will be automatically e-mail to the recipient during issuance.

For E-Credit lines this column should be blank unless QuickBuy E-Coupon behaviour is desired. Filling in an email address will result in the credit line coupon showing up in the e-coupon dropdown.

IssuedBy {Coupons} This is the e-mail address of the person(s) (or company) that issued the e-coupon. This field is used to send copies of the e-coupons to the person that issued the coupon.

This entry can also be a list of e-mail addresses delimited by commas.
Issued {Coupons} Boolean 0 or 1: This field is set true by SendSafe when it has issued the coupon. This field should not be modified directly. Setting this field false may cause undesirable results. Setting this field true will cause the coupon to be never issued by SendSafe.
CouponTemplate {Coupons} If checked this indicates that this coupon is a template coupon. This coupon will not be issued. It is used as a template for other coupons.

Template coupons should never contain a coupon number.

AutoCoupon {Coupons} If checked this indicates that this coupon record is a Auto-Coupon. If a product is purchased that matches either the AutoCouponProductIdCodes OR AutoCouponProductTypes codes then the e-coupon will be issued to the customer.

**AutoCoupon coupons are implicit templates and must also have CouponTemplate Check marked.

AutoCouponProductId {Coupons} This is a list of comma delimited ItemCodeID, which when ordered by a customer will trigger the mailing of an e-coupon. Each ProductId code must be enclosed in a pair of angle rackets <id code>.

Example Entry: <1288>,<9378>,<123>
would match any of the ItemCodeID Codes: 1288,9378, or 123.

A single customer order will trigger issuing of all matching e-coupons for this data column and AutoCouponProductType.

AutoCouponProductType {Coupons} This is a list of comma delimited ProductTypes, which when ordered by a customer will trigger the mailing of an e-coupon. Each ProductType must be enclosed in a pair of angle rackets <producytype>.

Example Entry: <BOOKS>,<BIKES>,<BAGS>
would match any of the Product types: BOOKS,BIKES, or BAGS.

A single customer order will trigger issuing of all matching e-coupons for this data column and AutoCouponProductId.

StoreCode {Coupons} This indicates the storefront code name that the coupon will be issued from. This does not limit the redemption of coupon to this e-store. The coupon will be good for use at any storefront that shares the database (typically there is one storefront per database).
IssuedFrom {Coupons} This is the return address used when e-mailing coupons to the recipient. If this field is left empty then the storefront's business e-mail address will be used as the return address
RequiredDiscountPlan {Coupons}

This column contains a discount plan that the customer must belong to in order for an auto-coupon to be issued to them. This entry can be set to null to disable discount plan checking.

In all cases except "ECREDITLINE" e-credit line flag, this value does not restrict usage of the coupon, it only controls automated issuing of an auto-coupon.

This field must be set to "ECREDITLINE" if this coupon is used for IHC Credit Lines or an E-Coupon Credit Line (automated or otherwise). Failure to set this correctly can result in the Credit line account being used in the coupon entry field with different treatment of sales tax and differen display.

CodeDescriptor {Coupons}

This column is used to store/retrieve custom identification information about a coupon. It is often used in AutoCoupon templates as a means of tagging e-coupons that were issued from that template.

This field is used to link coupons/credit lines to customer accounts for AEC and QBC coupons.

This field can define a coupon as a single use GLOBAL coupon. If this field is set to the reserved word "GLOBALSINGLEUSE" then this coupon will be limited to one use per customer. For BXGY coupons, this usage limitation will restrict redemption to a single eligible item in an order.

This field is used as the security code for IHC charges which use E-Coupon based IHC E-Credit lines (leading zeros are illegal). For security reasons, this codedescriptor checking occurs ONLY in the backend parts of the system.

IndexKey
[PRIMARY KEY]
{Coupons} Must a unique value for each coupon.
IndexKey
[PRIMARY KEY]
(CustomerSID}

Primary key for SID Record.

CustomerId (CustomerSID}

This is the customerID which identifies the account which will recieve access permission.

Entity (CustomerSID}

This identifies the type of account which is being granted permission. Set to 1.

ReadPerm (CustomerSID}

This is a list of Admin pages which this user will have permission to read (view). The page names must be bracketed with '/' slashes
See for more information

WritePerm (CustomerSID}

This is a list of Admin pages which this user will have permission to write (modify and delete). The page names must be bracketed with '/' slashes
See for more information.

RecordLocator
[COMPOSIT PRIMARY KEY]
(AdmTableLock}

This is the index key for the record which is being controlled.

See also: Admin Record Locking Operation

PrimaryTableName
[COMPOSIT PRIMARY KEY]
(AdmTableLock}

This is the name of the primary table in which this record locator is located (first 20 chars only).

LockType (AdmTableLock}

This code identifiys the type of lock:

  • 0 = Automated lock
  • 1 = Manual lock
  • 3 = Permanent lock

CID (AdmTableLock}

This is the customerID which has last locked the record.

Timestamp (AdmTableLock}

This is the time the record was last locked.

TransactionID
[PRIMARY KEY]
(CreditCard} **RESTRICTED ACCESS DATABASE

This is an automatically assigned number. It is used to establish the relationship between an {Order} record and its subordinate {OrderLineItem} records and this {CreditCard} record (see Customer Order data flow for more information).

CreditCardNumber (CreditCard} **RESTRICTED ACCESS DATABASE

This is the Credit card number. This number is stored in this separate database for security reasons. This field is automatically field in if CyberCash, IC Verify, or some other automated credit card processing is enabled. 

ExpDate (CreditCard} **RESTRICTED ACCESS DATABASE

This is expiration date. This field is automatically field in if CyberCash, IC Verify, or some other automated credit card processing is enabled. 

AddressCodeId {Addresses} This is an automatically assigned number. It is used to identify an address record (see Consolidated Address Storage for information about how this record is managed).
Name {Addresses} First & Last name (filled in by ordering process)
Company {Addresses} Name of company (filled in by ordering process)
Address {Addresses} Street Address (filled in by ordering process)
City {Addresses} City (filled in by ordering process)
State {Addresses} State (filled in by ordering process)
Zip {Addresses} Zip code (filled in by ordering process)
Country {Addresses} Country (filled in by ordering process)
Phone {Addresses} Phone number (filled in by ordering process)
E-Mail {Addresses} E-Mail Address (filled in by ordering process)
Fax {Addresses} Fax Number (Optional not filled in by ordering process)
AltPhone {Addresses} Alternate Phone Number (Optional not filled in by ordering process)
URL {Addresses} URL (Optional not filled in by ordering process)
International {Addresses} Information about Internation destination (Optional not filled in by ordering process)
IndexKey
[PRIMARY KEY]
{EventLog} Must a unique value (auto increment / Indentity Increment=1).
timestamp {EventLog} Time that the event occured
eventtype {EventLog}

ID Code for event:

  • ecCIDLogin = 1
  • ecBadCID = 2
  • ecLockoutBadCID = 3
  • ecLockoutBadPID = 4
  • ecLockoutManual = 5
  • ecPIDLogin = 6
  • ecBadPID = 7
  • ecPIDlogout = 8
  • ecLockoutMsgDisplayed = 10
  • ecLockoutBadURL = 11
  • ecBadURL = 12
  • ecFatalCodeAlert = 100
  • Admin Record Added = 200
  • Admin Record Modified = 201
  • Admin Record Deleted = 202
  • Admin Record Accessed = 203
  • ecDownload = 503
  • ecPwdRecoveryOk = 1000
  • ecPwdRecoveryFailed = 1001
  • ecPwdRecoveryLockout = 1002
  • ecEmailAddrChange = 2000
  • ecCustomerTracking = 10000
  • ecVistorTracking = 10001
  • ecVistorPageLoad = 10002
  • ecVistorPBrowse = 10003
  • ecVistorLBrowse = 11003
  • ecVistorAddToCart = 10004
  • ecCustomerPageLoad = 10012
  • ecCustomerPBrowse = 10013
  • ecCustomerLBrowse = 11013
  • ecCustomerAddToCart = 10014
  • ecCustomerClickCount = 10015
  • ecVistorClickCount = 10016
  • ecSQLBLoadMetric = 10017
  • ecSQLLLoadMetric = 11017
  • ecPrizeGiveaway = 20000

See also database maintenance

ip {EventLog} IP Address that caused the event
customerid {EventLog} Customer Id for cause of event
info {EventLog} Additional event information
reported {EventLog} True/False this event has been reported by the robot.
CTracker {EventLog} GUID code assigned and used for tracking. For info see: Enhanced Activity Tracking
IndexKey
[PRIMARY KEY]
{JobQueue} Must a unique sequential value (auto increment / Indentity Increment=1).
JobCode {JobQueue} JobCode that identifies the types of job that can be entered by the user:

Issue Coupons = 1
E-Mail Password = 2
WatchDog = 3
Run Batch Program = 4
B2B E-Mail Relay Digital FulFilment = 5
B2B FulFillment = 6
B2B FulFillment Order Shipped E-Mail = 7
and many more internal jobs

  • Issue Coupons = 1
  • E-Mail Password = 2
  • Watchdog (Woof) = 3
  • Run Batch = 4
  • E-Mail Relay = 5
  • B2B = 6
  • E-Mail From FulFillment that order has shipped = 7
  • RMA Return Materials (container) Shipped = 8
  • RMA NAG = 9
  • RMA Checkin = 10
  • RMA Disposition = 11
  • Pricing Matrix Import Spreadsheet Prcessong = 13
  • EMBroadcaster Job = 14
  • EMBroadcasterJobTracking Job = 15
  • Customer Import Job = 16
  • Dealer Import Job = 17
  • Coupon Import Job = 18
  • Items Import Job = 19
  • SubscriptionRefill Job = 20
  • RMA ATO Accept = 21
  • Order Line Item Import Job = 22
  • Update CC# Job = 23
  • Analyze bandwidth files Job = 24
  • Replication Job = 26
  • Export Job = 27
  • Product EMBroadcaster Job = 28
  • reserved = 29
  • Encryption Repair Job = 30
  • DB Test Job = 31
  • StoreConfig import Job = 32
  • I-CRM Job = 33
  • Listing Repair Job = 34
  • Generic SQL Job = 35
  • UPS Zone File import Job = 36
  • UPS Price File import Job = 37
  • EventLog Archive Job = 38
  • B2B FORMAT 1900 Fulfillment Job = 39
  • B2B FORMAT 1900 Order Shipped Processing Job = 40
  • In-House FulFilmment Processing Job = 41
  • Voider Processing Job = 42
  • GiftList Processing Job = 43
  • DB Maintenance Job = 44
  • Trigger Order Job = 45
  • Delayed Item Qty Adjustment Job = 46
  • Items table cloning Job = 47
  • Blog Maint Job = 48
  • Send email job = 49
  • Total DB Export / Backup = 50

Note(s):

  1. E-Mail Password Jobs are queued automatically when a customer requests that their lost UserId & Password be e-mailed to the address on-file.
Store {JobQueue} Storefront to run job on.
Scheduling {JobQueue} String defines how to schedule job. You can have more than one {} schedule for a job (limited only by string length of 100 char).

{Run Once}
{Run Once At MM/DD/YYYY hh:mm:ss} a date and time the job will run ONCE
{Run Date MM/DD hh:mm} a reoccurring date and time when this job will run (each year)
{Run Every N hourofday} where N = hour of day 0 - 23 hour (each day)
{Run Every N day} where N = Day of Month 1 - 31
{Run Every N minutes} where N = Minutes

Note(s):

  1. For jobs that are set to {Run Once} or {Run Once At xxx}; after the job executes sucessfully the job will deleted from the queue. If the job does not execute successful it will not be deleted, but instead marked as disabled.
Enabled {JobQueue} True/False this job is enabled.
Runable {JobQueue} Code control how the job is enabled:

0 = Not Enabled (Runnable)
1 = Enabled (Runnable) for Primary Robots
2 = Enabled (Runnable) for Backup Robots
3 = Enabled (Runnable) for Primary & Backup Robots

Param1 {JobQueue} 2000 Character length strings. Contains parameters that are relevent for a specific job code.
Param2 {JobQueue} 2000 Character length strings. Contains parameters that are relevent for a specific job code.
Param3 {JobQueue} 2000 Character length strings. Contains parameters that are relevent for a specific job code.
NextRun {JobQueue} Date that job will be run next. If this date is NULL then regardless the scheduling the task will initially run immediately.
LastRun {JobQueue} Date that the job was last run
StatusCode {JobQueue} Status code from Last Run:

0 = Okay
Any other value = error code

StatusMsg {JobQueue} Status message from last run
IndexKey
[PRIMARY KEY]
{Banner} This field is a unique number that identifies each {Banner} record. 
BannerName {Banner} Identifies each set of banners to be displays. This is the name that is passed as a parameter to the banner.insertBanner() method. If the same name is used for more than one record then the set of all records with the same name will be automatically rotated.
Active {Banner} Controls the display of a banner item. Values are 1 = display or 0 = do not display
RotatorIndex {Banner} This value is set to a unique number from 1 through 32,000. The order of precidence of this column controls the rotation order of the banners.
Language {Banner} This controls the display of banners when more than a single languse is used. Set to null if language support is not required. Keep all columns the same except the IndexKey and this column which will contain the two letter country localization code for a language (i.e. 'en' = english and 'de' = german and etc.) see the file SendSafe.localization.inc.asp for a complete list.
DisplayPageFileName {Banner} The name of the web file that is allowed to display this banner.
ImageFileURL {Banner} The complete URL of an image file to display as the banner.
ImageWidth {Banner} The width of the image.
ImageHeight {Banner} The height of the banner.
IndexKey
[PRIMARY KEY]
{StateControl} IndexKey.
CustomerID {StateControl} The customerID.
Timestamp {stateControl} The last time the record was updated or refreshed. This field is used to expire statecontrol records
KeyName {stateControl}

Name of the statecontrol key which defines the information stored in keyvalue. See also: ZDI and EDI URL Parameters and Operation

  1. svnWorkingTransactionID - The transactionid for the order under construction
  2. svnlastEditedshiptoAddressId - Last edited ship address (used by multiple shipto address orders)
  3. svnTempByPassLogon - When set prevents additional login requests from being displayed in the shopping cart.
  4. svnCustIP - CustomerID saved during login
  5. svnMultiaddrState - state of the multi-address flag (yes/no is this order a multiple address order)
  6. svnItemsAddedViaPurchaseList - yes/no were items added to the cart from the page purchase (reordering) page.
  7. svnLastEditedLineItemId - LineItemId of the last item edited in the basket
  8. svnBURLAddBasketRetAnchor - return URL for the page from which the addbasket page was loaded
  9. svnBURLReviewBasketRetAnchor - return URL for the page from which any basket page was loaded
KeyValue {stateControl} The value of the statecontrol key
TokenA
[PRIMARY KEY]
{LogonToken} EDI Parameter. See also: ZDI and EDI URL Parameters and Operation
CustomerID {LogonToken} The customerID linked to this EDI. If set to -20 the this record has been decomissioned.
Timestamp {LogonToken} The last time the CustomerID value was updated or the record was refreshed. This is updated every time a page is loaded. This field is used to expire EDI records.
TokenA
[PRIMARY KEY]
{LogonSession} EDI Parameter. See also: ZDI and EDI URL Parameters and Operation
SessionID {LogonSession} The session ID in effect during this session. Used to clear EDI on forced logout.
SID {LogonSession} The server ID as defined by Application("ServerID")

 


ITEMSEXT - EXTENDED ITEMS DATABASE TABLE

If your website includes an extended items table the following information describes each extended field. This table is not included in the base SendSafe package. This is a table often used by CPrompt when creating custom websites.

See also: Product Browser

This table is named: ItemsExt. These fields below are optional in most cases. If a table had not been included then you do not have extended Items information available for use.

1.OutOfStockMsg:
Ascii Text: Custom Out of stock message for each item. Most HTML tags are legal in this field. Test carefully, because an unclosed TAG could impact an entire buying page.

2. LongDesc:
HTML Code: Unlimited length product description column. This column is used in the product show case pages (instead of the shorter description in the standard items table). Use html code here to describe the product in order to control text & paragraph formatting. You can include image tags, tables, whatever you want. In some modes of operation the long description is also displayed in a product matrix which has been drilled down to the product display level. Designation to use a longDesc a product matrix is defined in the informationLink.

While this fields display length is unlimited when using the admin page, some internal functions used for management and record cloning will truncate the length of this record after 45,000 bytes. While this will not effect display or general operation, you will not be able to use automated record exporting management functions if you have longDesc greater than 45000 bytes).

For total format control over an item's showcase page, enable Non-Formatted display of the item. Enter the comment string <!--NOFORMAT--> into the longDesc field to enable NO-FORMAT display mode.

3. ProductSize:
OPTIONAL Ascii Text: Product size column (i.e. pills per bottle). This field is used for custom displays or logic; and is ignored by the standard e-store framework and SendSafe. Double quotes are illegal in all entries.

If you are planning on using the Stickiness report with items per container reporting THEN set this field to a numeric value which equals the number of items per container or box.

4. RetailPrice:

OPTIONAL floating point number: Retail Price (display only field). This field is used by the e-store framework for display and is otherwise ignored by standard SendSafe. Set this value to NULL to prevent inadvertent display.

See also: Special pricing in product browser

5. SpecialPrice:
OPTIONAL floating point number: Special Prices for item (if not null => Price in this column can be used to over-ride priceEa). This field is used by the e-store framework for display and is otherwise ignored by standard SendSafe. Set this value to NULL to prevent inadvertent display.

See also: Special pricing in product browser

This value has special meaning for RMA Adjustment Items. For Adjustment Item this entry sets the minium dollar value that the ATO can reach for a returned product when adjusted by this Adjustment Item (this value should always be a negative floating point number).

6. Logo:
Ascii Text: This column will contain the file name for the Manufactures logo. This image is used in the e-store framework product browsing for brands displays and other brands navigation tools. When in matrix e-store framework mode, leaving the logo column blank will result in a snaggletooth matrix display where some rows will not have the same number of logos as other rows.

7. Featured:
Set to "index.asp" will cause this product to be included in the featured products display on the index.asp page.

See also: Featured Products Description

8. FeaturedDesc:
This is a product description that is displayed as part of matrix search results and drilldown browsing. This text is also used in the featured product display. HTML can be used in this field to accomplish almost any kind of formatting you want. Typically limit this text to 200 characeters or less. You can use TABLES, FONT, and other tags.

See also: Featured Products Description

9. FeaturedLogo:
This is a product image or Logo which can be displayed as part of the featured product display. This images is typically a smaller thumbnail of the product but it can be anything you like.

See also: Featured Products Description

If all images are not the default size then those images must include additional size information. This information tells the system what size the file is…

Example:

Image file named: mycat.jpg
Example for images all the same size:
FeaturedLogo = en/images/mycat.jpg
Example for images with different sizes:
FeaturedLogo = "!200!300!en/images/mycat.jpg"
*where 200 = width and 300 = height

10. Brands:
This is a brands name used for product navigation. This name is used in the e-store framework product browsing for brands displays and other brands navigation tools. Though legal, for appearance reasons this column should not contain any punctuation marks and abbreviation marks including '&'. When in matrix e-store framework mode, leaving the brands column blank will result in a snaggletooth matrix display where some rows will not have the same number of logos as other rows.

11. FFParams:
This is free-form parameter entry field which is used to define additional information that is to be collected for this item during ordering. This field can / is used for quotes and custom products.

While this field's length is unlimited, some internal functions used for management and record cloning will truncate the length of this record after 25,000 bytes.

12. SubscriptionPeriodLength (a.k.a. SubPeriodLength):
SubscriptionPeriodlength is the total number of times a subscription will be billed. This billing includes the initial purchase and all orders initiated by job #20 during the life of the subscription. This also is the number of refills which will be issued by this subscription (i.e. the number of product reorders processed automatically). If a subscription has SubscriptionForcedOrderSKU = null THEN nothing is billed; each "faux billing event" does nothing except decrement the SubscriptionPeriodsLeft counter.

The value of SubscriptionPeriodLength indirectly establishes the length of the subscription in months by setting up how many billing events will occurs. If the SubscriptionPeriodlength is two and the subscriptionType=3 (months) then the total running time of the subscription will be 3 x 2 = 6 months. i.e. the subscription would have two billing cycles 3 months appart.

The subscriptionType sets the NextOrderDate by setting:
NextOrderDate = today + SubscriptionPeriodLength Months (performed by function updateLineItemSubscriptionStatus())

If the auto-renew option is set then SubscriptionPeriodLength has little affect since the subscription will automatically renew once the subscription has expired: months = SubscriptionPeriodLength x subscriptionType

To set the total period for a subscription:
Set this SubscriptionPeriodLength to the number to the number of months (time-periods) x subscriptionType that this subscription will run before expiring.

If the subscriptionType=1 and SubscriptionPeriodLength=6 THEN this subscription will run for 6 months with a refill order placed every month.

If the subscriptionType=6 and SubscriptionPeriodLength=2 THEN this subscription will run for 12 months with a refill order placed 6 months after the subscription starts and one order on the last day of the subscription 12 months after the subscription began.

This SubscriptionPeriodLength should be set to something greater than 1 if automatic subscription renewal is enabled; otherwise every order for subscription will cause a renewal (which will work, but would be a little unusual). If automated renewal is enabled then when SubscriptionPeriodsLeft = 0 the subscription will be renewed and SubscriptionPeriodsLeft will be set back to a value equal to SubscriptionPeriodLength-1. (see also subscription).

13. SubscriptionFreecount (a.k.a. SubFreecount):
Number of periods required for a free order. Set this value to zero if FREE refilling of a susbscription is not being offered for this product. (see also subscription).

14. SubscriptionType (a.k.a. SubType) the billing cycle:
This field defines the length of the subscription billing cycle in months; examples: If set to one then the subscription will be billed every month. If set to 6 then the subscription will be billed every 6 months.

This subscription job (#20) sets the next billing period by taking todays date and adding SubscriptionType months to it.

Set this field to the number of months for each billing cycle or period. For a 6 month billing cycle set SubscriptionType=6, For a 12 month billing cycle set SubscriptionType=12. Values above 10000 are revered for future use. (see also subscription).

15. SubscriptionForcedOrderSKU (a.k.a. SubForcedOrderSKU):
This is the product SKU that is forced-ordered for the subscription. If NULL then nothing is forced ordered. This item must be a special SKU that is only used for forced ordering; if the same SKU is used for the subscription and the refill then the refill logic will not function correctly (see also subscription).

16. SilentOrder:
ItemIdCode for an item that will be silently added to the order at zero cost. Set to zero or NULL to disable. If you are calculating shipping cost by weight there will be shipping charges unless the item is set to a weight=0. If you are calculating shipping cost by zone (without weight) then shipping costs will be added.

Note: The Robot config value must be set for this funtion to work: SILENT LINEITEM ORDERING = YES

17. MinQtyPerLineItem:
Minimum quantity which is allowed for this item per add-to-cart operation. If itemsExt.Surcharge != null THEN entry of a line item with a lower quantity is not allowed. If itemsExt.Surcharge = "Dollar Amount" THEN entry of line item with a lower quantity is allowed but the Surcharge is added to the order. Set to zero to disable minimum quantity testing/rules. Null is an illegal value for this field.

18. Surcharge:
A fixed dollar amount which is added per lineitem if MinQtyPerLineItem is not entered. Set this column to NULL to disable surcharges for this item. If min quantity rules are not met, this amount will be entered into the AppliedQtyChargeAmt field in the item in the cart.

19. CheckForDups:
if set to 1 THEN an informational message is displayed to the customer if they have purchased this item in the past. This message warns them that they have already purchased this item in the past and may not want to purchase a second copy. This is very useful for protecting customers from ordering more than one subscription.

 


ORDERLINEITEMEXT - EXTENDED ORDERLINEITEMS DATABASE TABLE

If your website includes an extended order line items table the following information describes each extended field. This table is not included in the base SendSafe package. This is a table often used by CPrompt when creating custom websites.

Note: It is possible to have order with a mix of line items with and without an OrderLineItemExt table entry.

This table is named: OrderLineItemExt. These fields below are optional in most cases. If a table had not been included then you do not have extended OrderLineItems information available for use.

1.FreeFormParams:
This field contains a list of free-form-params encoded as enumrated FORM FIELDS. See: SendSafe.buysample.asp and Free-Form Params

2. SubscriptionEnabed:
Enabled (flags) this line item as a subscription order which is to be processed (see also subscription). Values:

-1Paused
0Disabled
1Enabled
2Enabled and on hold (i.e. the subscription credit card charges have been declined and will be retried in 24 hours).

3. SubscriptionPeriodsLeft:
Number of periods left in the subscription (a period is defined by SubscriptionType (see also subscription)

4. NextOrderDate:
Date the next subscription order will be processed or optionally the date the subscription will start (see also subscription).

5. ServiceContract:
Optional - The number of a service contract asscoiated with this line item (warentee, phone service, etc).

6. InspectedBy:
Optional - The customerId account number for the employee who inspected this products (either outgoing or RMA return). This field can also contain the DealerId of the owner of this record if this OrderLineItem is a Bid Template.

7. SerialNumber:
Optional - The serial number of this item.

5. RMADisposition:
Optional - Flags the final outcome of this RMA return. Did it go into stock, the trash, donated, etc.

6. AppliedSurchargeAmt:
This is the amount of surchages applied to this order (if any). This amount is unaffected by quantity. IF present THIS "surcharge dollar amount" is displayed below the lineitem as "Additional charges"

7. AppliedSurchargeMsg:
If present THIS message is displayed below the item. If present THIS message is displayed in printed receipts. This message may be the result of a combination of messages. This message DOES NOT contain automatically generated MinQtyPerLineItem messsages.

8. AppliedQtyChargeAmt:
IF PRESENT an automated QTY SURCHARGE MESSAGE is displayed. This amount is derrived from itemsext. MinQtyPerLineItem and ItemsExt.Surcharge.

 


CUSTOMERSEXT - EXTENDED CUSTOMERS DATABASE TABLE

If your website includes an extended customers table the following information describes each extended field. This table is not included in the base SendSafe package. This is a table often used by CPrompt when creating custom websites.

This table is named: CustomersExt. These fields below are optional in most cases. If a table had not been included then you do not have extended CustomersExt information available for use.

1. DateCreated:
This is the date that this customer account was created.

2. AssignedDealerID:
This is the assgined dealerId for this account (dealerId assignments may be flagged elsewhere). If an DealerID is present this results in two different potential actions:

  1. All orders placed by this customer will be assigned this DealerId Code in the DealerId field in orders.
  2. If the Dealer Record matching this ID has the same name and this customer record THEN the customer account is treated as a Dealer Login.

For more information see: Dealers and Affiliates

3. OrderCount:
This is the number of orders placed by this customer since the creation date for this record. This field is unmanaged and reserved for future use.

4. CustomerComment:
This field is used for comments or records about this customer.

5. MBOwnerFlag:
This flag indicates that this is an E-MailBroadcaster owner account. This is someone who can send E-MailBroadcasts.

6. MBMembership:
The Membership column in a EMAIL-TARGET-CUSTOMER-RECORD is used to define list memebership. The inclusion logic applied to this field is negative. No entry in this list means that this customer is a memember of all lists.