User Guide

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

Define Selection Criteria by Building Segments

Entering selection criteria, or defining the types of individuals you are selecting, involves building one or more segments that outline and refine your target results. This is known as segmentation. Segments represent the groups of customers you want to select for your campaign. Each segment may contain several conditions to specifically define a group of customers in detail, or just a few. You build these segments either by dragging a new Segment from the segments tab to the Design tab or by selecting a pre-made segment under Libraries. Your selection conditions dictate which customers to select or omit for each segment's TouchPoint groups.


Table of Contents

By default, segments are mutually exclusive. TouchPoint evaluates segments starting with the first and working toward the last until it finds a match. If a customer is eligible for more than one segment, he or she is selected only once, at the first match. However, you can instruct TouchPoint to select customers on every matching segment, rather than on just the first segment by making the segment Discrete. To learn more about this process read Making Segments FallThru or Discrete. Regardless of how many segments you choose to match, TouchPoint starts at the first, or top segment, and works towards the bottom.

The first stage of a TouchPoint campaign, after selecting a template, is the creation of selection criteria. Selection criterion are the Excludes and Pass-Thru fields that you use to select your targeted customers from your database. This is otherwise referred to as 'Segmentation.'


If you wish to run or create two TouchPoint campaigns simultaneously, go to the MarketWide main window and click the TouchPoint icon again for an additional TouchPoint window rather than clicking the 'New' icon, which closes the current TouchPoint.


Excluded customers are treated as if they do not exist. TouchPoint provides three ways to exclude data. Deciding what exclude method to use depends on what you need to accomplish. 

Defining Excludes

Global Excludes Global Exclude is a way to make sure that certain consumers are suppressed from your entire campaign. For example, you might want to exclude people who are deceased or opted out of marketing communications. Global excludes make sure that no consumers who otherwise qualify for the exclude logic are selected by the campaign at any segment. 

Segment Excludes Segment Excludes are applied within the TouchPoint selection tree at the exact position where they are placed, and affect only consumers who reach the exclude. For example, if a Segment Exclude is created to exclude recent buyers, and is placed beneath a parent that selects females, the Recent Buyer exclude is only applied to females and not to males. Segment Excludes are useful for managing campaign logic and preventing consumers from reaching certain segments, while still allowing other segments to evaluate them. 

Table Filters Table Filters are used primarily for performance, and as such they restrict the amount of data TouchPoint processes. It's important to remember that a Table Filter is applied only to the table on which it is built, and is not evaluated for any other table. So, if you create a "Gender = Female" filter on a Customer table but your campaign has segments referencing other tables, the campaign can select consumers that are not females. 

Global Excludes

In some campaigns, you may want to suppress a group of customers from your campaign from being selected into any segment. 
Excluded customers are not evaluated and will not be counted as either matches or non-matches in your campaign. Excluded customers are treated as if they do not exist.

The Excludes Dialog 

The Excludes window allows you to choose groups of customers to exclude from your current campaign.  



Opens a saved exclude.

Saves the selected exclude.

Opens SQLManager so that you can change the table that is highlighted.

Deletes the selected exclude.

Allows you to clear the selected exclude criteria.

To Add Global Excludes

    • Click the Excludes toolbar button (  ) or select Query then choose Excludes from the menu.
    • Click the Database Exclude button () to open SQLManager and select a table. It will add a new row to the Exclude tab.
    • Click the Add Filter... link to generate a filter defining the customers to be excluded.
    • When finished adding all the appropriate excludes, click OK.

The Global Exclude outlined on this page may not be the best option for your campaign. Please see Exclude Segments or Table Filters for more information.


An Exclude icon will be displayed in the bottom right corner of the TouchPoint window to indicate that an exclude has been defined.

Executing Your Selection

During the execution phase, TouchPoint reads the database and accepts or rejects customers based upon your segment conditions. Selected customers are saved in a temporary work area managed by TouchPoint. You can view the number of selections returned for each segment in the Tracking Tab.

Once you review the returns, you can decide how many individuals from each cell you wish to keep. TouchPoint's default is to keep all selected customers. To choose to use only a portion of the individuals selected in your campaign, click the Tracking Tab found at the bottom of the TouchPoint window. You can also attach additional pertinent information to your selected customers using extra columns as defined during the TouchPoint Template creation process.

titleHow to Execute Your Selection

After defining your segments, click the submit icon () or select File and click Submit.

Using Table Filters

Using Table Filters to Expedite Your Selections

Table Filters are useful if you have a large amount of data and only need to process a small subset; e.g., out of hundreds of millions of transactions over a 10-year period, you may only want to select from orders generated in the last 12 months. This way the filter prevents TouchPoint from examining rows unnecessarily and taking additional processing time. Successful use of Table Filters can save extensive amounts of time when processing large or complicated campaigns.

titleTo Add a Filter
  1. Click on the Table Filters button () or select Campaign and then choose Table Filters.
  2. In the Tables and Filters tab of the Properties window, click on the [No filter defined. Click to add filter] link.

  3. In the Filter window, drag and drop all the appropriate fields from the table into the panel on the right.
  4. Choose your condition and value(s) for each field.
  5. Click OK to add your filter.

TouchPoint Options

Override Select Buffer Size
This is the number of rows per Customer Key that TouchPoint will look at before it moves on to the next customer key. For example, suppose one customer has 1,000 rows on your orders table and you have your buffer size set to 500, if they don't meet your criteria in the first 500 rows checked they will not be selected.

Treat Missing Library Objects as Error
Checking this option tells the engine that if an object can't be in the library, it should fail with an error instead of falling back to the local copy.

When Scheduled, Run Selection Only
If checked selection will run but your campaign will not be committed.

Maximum Nth Values
Displays the maximum number of values that can be Nth in the MarketFlow tab.This applies to the number of values for the selected "Nth By:" field in the Nth Setup window. 

Display Customer Key in Main Window
Displays the Customer Key while the task is running in the main MarketWide window.

Display Segment Name and Description
Shows both the Segment Name and Description

Show Full Segment Descriptions in Hierarchical View
Shows both the Segment Name and Description

Remain Open during Long Running Operations
This will leave the TouchPoint window open when running operations like Commit or Frequency Distributions.

Enable MarketFlow Notifications by Default
Anytime a notification option is available in the MarketFlow it will automatically check that you would like to be notified.

Pass-Thru Fields

The TouchPoint Pass-Thru field feature lets you access additional pieces of data pertaining to the customers or prospects selected by your campaign, whether or not you’re using this data as part of the selection criteria. By default, during customer selection, TouchPoint captures the 'Customer Key' field for everyone it selects. Pass-Thru fields are how you add other fields you may need to create your MarketFlow Journey. Reasons for using Pass-Thru fields include:

  • Snapshots – you can capture dynamic information at the time of selection and save it to Promotion History for analytical purposes. A common example is a model score, where you might wish to know whether a campaign impacts model scores favorably or adversely for customers targeted by that campaign.
  • Match Limits - allow you to choose the “best” subset of customers based on the value of a Pass-Thru field.
  • Constraints – let you limit the number of solicits being sent to a household or business based on Pass-Thru fields such as recency or lifetime value.
  • MarketFlow Journeys – Pass-Thru fields help you in creating branches, filters, excludes, and splits in your campaign MarketFlow.
  • Dynamic Content – Pass-Thru fields can be used as dynamic content within email HTML, direct mail (e.g., envelope teasers), and even other channels such as telemarketing or social media.

Types of Pass-Thru Fields

Pass-Thru fields can be created as either static or reference:

  • Static Pass-Thrus make a copy of the actual data during the initial selection and segmentation (i.e., when you submit from the “Criteria” tab). This data is physically stored inside your campaign, meaning your campaign takes up more space. This option is primarily useful for Snapshot fields. Since the snapshot is taken at selection time, static Pass-Thru fields are frozen and do not get updated if the original field value changes while the campaign is active. Finally, static Pass-Thrus have to be defined before your campaign is submitted; you have to resubmit the campaign after adding or removing one.
  • Reference Pass-Thrus function much like a windows shortcut or browser URL string. A reference Pass-Thru is essentially a pointer to an actual field in the database, which might change constantly much like a web page. If the value of a reference Pass-Thru changes while your campaign is active, the new value appears immediately. Reference Pass-Thrus can be added to or removed from your campaign at any time without needing to resubmit.

Examples of When to Use Pass-Thru Fields 

Example 1: An organization wants to track specific donor segments for each customer, classifying donors by giving levels. This classification gives a snapshot of the giving status of a customer each time he or she is solicited. Using Pass-Thrus to update client status allows the organization to make the solicitation more specific to the individual or to perform reporting analysis.

Example 2: A business wishes to choose whom to solicit based on a model rank score. The marketer could use a Model Score field as a Pass-Thru, and then when selecting Match Limit, elect to base the Priority on the highest model scores. This would ensure that the customers receiving mail are the ones best situated to make purchases.

titleTo Choose Pass-Thru Fields
  1. Click the Pass-Thru Fields button () on the toolbar or select Campaign and click Pass-Thru Fields from the menu.
  2. Scroll through the list of displayed tables and locate the field you wish to add. To add a table to the list, click the Add Table button ().
  3. Choose your Pass-Thru field(s) by dragging and dropping each one from the Available List panel to the Selected List panel.
  4. By default, Pass-Thru fields are added as a reference. For static Pass-Thrus, simply uncheck the Reference box next to the field name.
  5. Add an alias to your Pass-Thru fields if desired. This is the name TouchPoint uses for the field throughout the campaign process.
  6. When finished, click OK.
  • If you add or remove a static Pass-Thru on a campaign that’s already been submitted for counts, TouchPoint forces you to resubmit the campaign.
  • Reference Pass-Thrus can be added to a campaign at any time, without the need to resubmit.

User Defined Field(s)

User Defined Fields are math expressions, similar to the formula dialog found in Analyzer. Using this feature, you can perform practically any sort of arithmetic expression involving database fields, aggregates, and variables; and return the result as a field that can be referenced in your segment criteria. For example, you might take a consumer’s dollar amount from their last order and subtract from it their average order amount for the past year, and the result is over $30 you send them a gift card. This would be very difficult if not practically impossible without this feature. Note that the interface lets you type in conditions directly if you know the syntax.

This feature is extremely powerful and the MXParser library we use supports over 400 advanced functions, operators, and mathematical constants like Pi.

+Additiona + b
-Subtractiona - b
*Multiplicationa * b
/Divisiona / b
^Exponentiationa ^ b
#Modulo functiona # b
titleBinary Relations
=Equalitya = b
==Equalitya == b
<>Inequationa <> b
~=Inequationa ~= b
!=Inequationa != b
<Lower thana < b
>Greater thana > b
<=Lower or equala <= b
>=Greater or equala >= b
titleBoolean Operators
&Logical conjunction (AND)p & q
&&Logical conjunction (AND)p && q
/\Logical conjunction (AND)p /\ q
~&NAND - Sheffer strokep ~& q
~&&NAND - Sheffer strokep ~&& q
~/\NAND - Sheffer strokep ~/\ q
|Logical disjunction (OR)p | q
||Logical disjunction (OR)p || q
\/Logical disjunction (OR)p \/ q
~|Logical NORp ~| q
~||Logical NORp ~|| q
~\/Logical NORp ~\/ q
(+)Exclusive or (XOR)p (+) q
-->Implication (IMP)p --> q
<--Converse implication (CIMP)p <-- q
-/>Material nonimplication (NIMP)p -/> q
</-Converse nonimplication (CNIMP)p </- q
<->Logical biconditional (EQV)p <-> q
titleBitwise Operators
@~Bitwise unary complement@~10
@&Bitwise AND10 @& 2
@^Bitwise exclusive OR10 @^ 2
@|Bitwise inclusive OR10 @| 2
@<<Signed left shift10 @<< 2
@>>Signed right shift10 @>> 2
titleUnary Functions
sinTrigonometric sine functionsin(x)
cosTrigonometric cosine functioncos(x)
tanTrigonometric tangent functiontan(x)
tgTrigonometric tangent functiontg(x)
ctanTrigonometric cotangent functionctan(x)
ctgTrigonometric cotangent functionctg(x)
cotTrigonometric cotangent functioncot(x)
secTrigonometric secant functionsec(x)
cosecTrigonometric cosecant functioncosec(x)
cscTrigonometric cosecant functioncsc(x)
asinInverse trigonometric sine functionasin(x)
arsinInverse trigonometric sine functionarsin(x)
arcsinInverse trigonometric sine functionarcsin(x)
acosInverse trigonometric cosine functionacos(x)
arcosInverse trigonometric cosine functionarcos(x)
arccosInverse trigonometric cosine functionarccos(x)
atanInverse trigonometric tangent functionatan(x)
arctanInverse trigonometric tangent functionarctan(x)
atgInverse trigonometric tangent functionatg(x)
arctgInverse trigonometric tangent functionarctg(x)
actanInverse trigonometric cotangent functionactan(x)
arcctanInverse trigonometric cotangent functionarcctan(x)
actgInverse trigonometric cotangent functionactg(x)
arcctgInverse trigonometric cotangent functionarcctg(x)
acotInverse trigonometric cotangent functionacot(x)
arccotInverse trigonometric cotangent functionarccot(x)
lnNatural logarithm function (base e)ln(x)
log2Binary logarithm function (base 2)log2(x)
log10Common logarithm function (base 10)log10(x)
radDegrees to radians functionrad(x)
expExponential functionexp(x)
sqrtSqure root functionsqrt(x)
sinhHyperbolic sine functionsinh(x)
coshHyperbolic cosine functioncosh(x)
tanhHyperbolic tangent functiontanh(x)
tghHyperbolic tangent functiontgh(x)
ctanhHyperbolic cotangent functionctanh(x)
cothHyperbolic cotangent functioncoth(x)
ctghHyperbolic cotangent functionctgh(x)
sechHyperbolic secant functionsech(x)
cschHyperbolic cosecant functioncsch(x)
cosechHyperbolic cosecant functioncosech(x)
degRadians to degrees functiondeg(x)
absAbsolut value functionabs(x)
sgnSignum functionsgn(x)
floorFloor functionfloor(x)
ceilCeiling functionceil(x)
notNegation functionnot(x)
asinhInverse hyperbolic sine functionasinh(x)
arsinhInverse hyperbolic sine functionarsinh(x)
arcsinhInverse hyperbolic sine functionarcsinh(x)
acoshInverse hyperbolic cosine functionacosh(x)
arcoshInverse hyperbolic cosine functionarcosh(x)
arccoshInverse hyperbolic cosine functionarccosh(x)
atanhInverse hyperbolic tangent functionatanh(x)
arctanhInverse hyperbolic tangent functionarctanh(x)
atghInverse hyperbolic tangent functionatgh(x)
arctghInverse hyperbolic tangent functionarctgh(x)
actanhInverse hyperbolic cotangent functionactanh(x)
arcctanhInverse hyperbolic cotangent functionarcctanh(x)
acothInverse hyperbolic cotangent functionacoth(x)
arcothInverse hyperbolic cotangent functionarcoth(x)
arccothInverse hyperbolic cotangent functionarccoth(x)
actghInverse hyperbolic cotangent functionactgh(x)
arcctghInverse hyperbolic cotangent functionarcctgh(x)
asechInverse hyperbolic secant functionasech(x)
arsechInverse hyperbolic secant functionarsech(x)
arcsechInverse hyperbolic secant functionarcsech(x)
acschInverse hyperbolic cosecant functionacsch(x)
arcschInverse hyperbolic cosecant functionarcsch(x)
arccschInverse hyperbolic cosecant functionarccsch(x)
acosechInverse hyperbolic cosecant functionacosech(x)
arcosechInverse hyperbolic cosecant functionarcosech(x)
arccosechInverse hyperbolic cosecant functionarccosech(x)
sincSinc function (normalized)sinc(x)
SaSinc function (normalized)Sa(x)
SincSinc function (unnormalized)Sinc(x)
BellBell numberBell(x)
LucLucas numberLuc(n)
FibFibonacci numberFib(n)
harmHarmonic numberharm(n)
isprPrime number test (is number a prime?)ispr(n)
PiPrime-counting function - Pi(n)Pi(n)
EiExponential integral function (non-elementary special function) - usage example: Ei(x)Ei(x)
liLogarithmic integral function (non-elementary special function) - usage example: li(x)li(x)
LiOffset logarithmic integral function (non-elementary special function) - usage example: Li(x)Li(x)
erfGauss error function (non-elementary special function) - usage example: 2 + erf(x)erf(x)
erfcGauss complementary error function (non-elementary special function) - usage example: 1 - erfc(x)erfc(x)
erfInvInverse Gauss error function (non-elementary special function) - usage example: erfInv(x)erfInv(x)
erfcInvInverse Gauss complementary error function (non-elementary special function) - usage example: erfcInv(x)erfcInv(x)
ulpUnit in The Last Place - ulp(0.1)ulp(x)
titleBinary Functions
logLogarithm functionlog(a,b)
modModulo functionmod(a,b)
CBinomial coefficient functionC(n,k)
BernBernoulli numbersBern(n,k)
Stirl1Stirling numbers of the first kindStirl1(n,k)
Stirl2Stirling numbers of the second kindStirl2(n,k)
WorpWorpitzky numberWorp(n,k)
EulerEuler numberEuler(n,k)
KDeltaKronecker deltaKDelta(i,j)
HarmHarmonic numberHarm(x,n)
rUniRandom variable - Uniform continuous distribution U(a,b), usage example: 2*rUni(2,10)rUni(a,b)
rUnidRandom variable - Uniform discrete distribution U{a,b}, usage example: 2*rUnid(2,100)rUnid(a,b)
roundHalf-up rounding, usage examples: round(2.2, 0) = 2, round(2.6, 0) = 3, round(2.66,1) = 2.7round(x,n)
rNorRandom variable - Normal distribution N(m,s) m - mean, s - stddev, usage example: 3*rNor(0,1)rNor(m,s)
title3-args Functions
ifIf function ( if(con, if_true, if_false) )if(a=1, 2, 0)
chiCharacteristic function for x in (a,b) - chi(x, a, b)chi(x, a, b)
CHiCharacteristic function for x in [a,b] - CHi(x, a, b)CHi(x, a, b)
ChiCharacteristic function for x in [a,b) - Chi(x, a, b)Chi(x, a, b)
cHiCharacteristic function for x in (a,b] - cHi(x, a, b)cHi(x, a, b)
pUniProbability distribution function - Uniform continuous distribution U(a,b), usage example: 2 * pUni(x, 2, 10)pUni(x, a, b)
cUniCumulative distribution function - Uniform continuous distribution U(a,b), usage example: 2 * cUni(x, 2, 10)cUni(x, a, b)
qUniQuantile function (inverse cumulative distribution function) - Uniform continuous distribution U(a,b), usage example: 2 * qUni(q, 2, 10)qUni(q, a, b)
pNorProbability distribution function - Normal distribution N(m,s) m - mean, s - stddev, usage example: 2 * pNor(x, 1, 2)pNor(x, a, b)
cNorCumulative distribution function - Normal distribution N(m,s) m - mean, s - stddev, usage example: 2 * cNor(x, 1, 2)cNor(x, a, b)
qNorQuantile function (inverse cumulative distribution function) - Normal distribution N(m,s) m - mean, s - stddev, usage example: 2 * qNor(q, 1, 2)qNor(q, a, b)
titleVariadic Functions
iffIf function ( iff(con_1, if_true_1_exp, ..., con_n, if_true_n_exp) )iff(x=1, 1; x=2, 2; x=3, 3)
minMinimum function: min(a,b,c,...)min(2,3,1)
maxMaximum function: max(a,b,c,...)max(2,3,1)
ConFracContinued fraction: ConFrac(a,b,c,...)ConFrac(5,1,2,4)
ConPolContinued polynomial: ConPol(a,b,c,...)ConPol(5,1,2,4)
gcdGreatest common divisor: gcd(a,b,c,...)gcd(5,1,2,4)
lcmLeast common multiple: lcm(a,b,c,...)lcm(5,1,2,4)
addSummation operator add(a1,a2,a3,...,an)add(5,1,2,4)
multiMultiplication multi(a1,a2,a3,...,an)multi(5,1,2,4)
meanMean / average value mean(a1,a2,a3,...,an)mean(5,1,2,4)
varBias-corrected sample variance var(a1,a2,a3,...,an)var(5,1,2,4)
stdBias-corrected sample standard deviation std(a1,a2,a3,...,an)std(5,1,2,4)
rListRandom number from given list of numbers rList(a1,a2,a3,...,an)rList(5,1,2,4)
titleIterated Operators
sumSummation operator (SIGMA) sum(i, from, to, f(i,...) <,BY>)sum(i, 1, 10, i^2), sum(i, 1, 10, i^2, 0.5)
prodProduct operator (PI) prod(i, from, to, f(i,...) <,BY>)prod(i, 1, 10, i^2), prod(i, 1, 10, i^2, 0.5)
avgAverage operator avg(i, from, to, f(i,...) <,BY>)avg(i, 1, 10, i^2), avg(i, 1, 10, i^2, 0.2)
variBias-corrected sample variance operator vari(i, from, to, f(i,...) <,BY>)vari(i, 1, 10, i^2), vari(i, 1, 10, i^2, 0.5)
stdiBias-corrected sample standard deviation operator stdi(i, from, to, f(i,...) <,BY>)stdi(i, 1, 10, i^2), stdi(i, 1, 10, i^2, 0.01)
miniMinimum value mini(i, from, to, f(i,...) <,BY>)mini(i, 1, 10, i^2), mini(i, 1, 10, i^2, 0.3)
maxiMaximum value maxi(i, from, to, f(i,...) <,BY>)maxi(i, 1, 10, i^2), maxi(i, 1, 10, i^2, 0.4)
titleCalculus Operators
intDefinite integral operator ( int(f(x,...), x, a, b) )inf(sin(x), x, 0, pi)
derDerivative operator ( der(f(x,...), x) )der(sin(x), x)
der-Left derivative operator ( der-(f(x,...), x) )der+(sin(x), x)
der+Right derivative operator ( der+(f(x,...), x) )der-(sin(x), x)
dernN-th derivative operator ( dern(f(x,...), x) )dern(x^2, 2, x)
diffForward difference operator diff(f(x,...), x <,h>)diff(sin(x), x), diff(f(x), x, 0.1)
difbBackward difference operator difb(f(x,...), x <,h>)difb(sin(x), x), difb(f(x), x, 0.1)
intDefinite integral operator ( int(f(x,...), x, a, b) )inf(sin(x), x, 0, pi)
titleMathematical Constants
piPi, Archimedes' constant or Ludolph's number2*pi
eNapier's constant, or Euler's number, base of Natural logarithme*3
[gam]Euler-Mascheroni constant2*[gam]
[phi]Golden ratio[phi]*3
[PN]Plastic constant2*[PN]
[B*]Embree-Trefethen constant[B*]*3
[F'd]Feigenbaum constant alfa2*[F'd]
[F'a]Feigenbaum constant delta[F'a]*3
[C2]Twin prime constant2*[C2]
[M1]Meissel-Mertens constant[M1]*3
[B2]Brun's constant for twin primes2*[B2]
[B4]Brun's constant for prime quadruplets[B4]*3
[BN'L]De Bruijn-Newman constant2*[BN'L]
[Kat]Catalan's constant[Kat]*3
[K*]Landau-Ramanujan constant2*[K*]
[K.]Viswanath's constant[K.]*3
[B'L]Legendre's constant2*[B'L]
[RS'm]Ramanujan-Soldner constant[RS'm]*3
[EB'e]Erdos-Borwein constant2*[EB'e]
[Bern]Bernstein's constant[Bern]*3
[GKW'l]Gauss-Kuzmin-Wirsing constant2*[GKW'l]
[HSM's]Hafner-Sarnak-McCurley constant[HSM's]*3
[lm]Golomb-Dickman constant2*[lm]
[Cah]Cahen's constant[Cah]*3
[Ll]Laplace limit2*[Ll]
[AG]Alladi-Grinstead constant[AG]*3
[L*]Lengyel's constant2*[L*]
[L.]Levy's constant[L.]*3
[Dz3]Apery's constant2*[Dz3]
[A3n]Mills' constant[A3n]*3
[Bh]Backhouse's constant2*[Bh]
[Pt]Porter's constant[Pt]*3
[L2]Lieb's square ice constant2*[L2]
[Nv]Niven's constant[Nv]*3
[Ks]Sierpinski's constant2*[Ks]
[Kh]Khinchin's constant[Kh]*3
[FR]Fransen-Robinson constant2*[FR]
[La]Landau's constant[La]*3
[P2]Parabolic constant2*[P2]
[Om]Omega constant[Om]*3
[MRB]MRB constant2*[MRB]
[li2]li(2) - logarithmic integral function at x=2[li2]*3
[EG]Gompertz constant2*[EG]
titlePhysical Constants
[c]<Physical Constant> Light speed in vacuum [m/s] (m=1, s=1)[c]*3
[G.]<Physical Constant> Gravitational constant (m=1, kg=1, s=1)]2*[G.]
[g]<Physical Constant> Gravitational acceleration on Earth [m/s^2] (m=1, s=1)[g]*3
[hP]<Physical Constant> Planck constant (m=1, kg=1, s=1)2*[hP]
[h-]<Physical Constant> Reduced Planck constant / Dirac constant (m=1, kg=1, s=1)][h-]*3
[lP]<Physical Constant> Planck length [m] (m=1)2*[lP]
[mP]<Physical Constant> Planck mass [kg] (kg=1)[mP]*3
[tP]<Physical Constant> Planck time [s] (s=1)2*[tP]
titleAstronomical Constants
[ly]<Astronomical Constant> Light year [m] (m=1)[ly]*3
[au]<Astronomical Constant> Astronomical unit [m] (m=1)2*[au]
[pc]<Astronomical Constant> Parsec [m] (m=1)[pc]*3
[kpc]<Astronomical Constant> Kiloparsec [m] (m=1)2*[kpc]
[Earth-R-eq]<Astronomical Constant> Earth equatorial radius [m] (m=1)[Earth-R-eq]*3
[Earth-R-po]<Astronomical Constant> Earth polar radius [m] (m=1)2*[Earth-R-po]
[Earth-R]<Astronomical Constant> Earth mean radius (m=1)[Earth-R]*3
[Earth-M]<Astronomical Constant> Earth mass [kg] (kg=1)2*[Earth-M]
[Earth-D]<Astronomical Constant> Earth-Sun distance - semi major axis [m] (m=1)[Earth-D]*3
[Moon-R]<Astronomical Constant> Moon mean radius [m] (m=1)2*[Moon-R]
[Moon-M]<Astronomical Constant> Moon mass [kg] (kg=1)[Moon-M]*3
[Moon-D]<Astronomical Constant> Moon-Earth distance - semi major axis [m] (m=1)2*[Moon-D]
[Solar-R]<Astronomical Constant> Solar mean radius [m] (m=1)[Solar-R]*3
[Solar-M]<Astronomical Constant> Solar mass [kg] (kg=1)2*[Solar-M]
[Mercury-R]<Astronomical Constant> Mercury mean radius [m] (m=1)[Mercury-R]*3
[Mercury-M]<Astronomical Constant> Mercury mass [kg] (kg=1)2*[Mercury-M]
[Mercury-D]<Astronomical Constant> Mercury-Sun distance - semi major axis [m] (m=1)[Mercury-D]*3
[Venus-R]<Astronomical Constant> Venus mean radius [m] (m=1)2*[Venus-R]
[Venus-M]<Astronomical Constant> Venus mass [kg] (kg=1)[Venus-M]*3
[Venus-D]<Astronomical Constant> Venus-Sun distance - semi major axis [m] (m=1)2*[Venus-D]
[Mars-R]<Astronomical Constant> Mars mean radius [m] (m=1)[Mars-R]*3
[Mars-M]<Astronomical Constant> Mars mass [kg] (kg=1)2*[Mars-M]
[Mars-D]<Astronomical Constant> Mars-Sun distance - semi major axis [m] (m=1)[Mars-D]*3
[Jupiter-R]<Astronomical Constant> Jupiter mean radius [m] (m=1)2*[Jupiter-R]
[Jupiter-M]<Astronomical Constant> Jupiter mass [kg] (kg=1)[Jupiter-M]*3
[Jupiter-D]<Astronomical Constant> Jupiter-Sun distance - semi major axis [m] (m=1)2*[Jupiter-D]
[Saturn-R]<Astronomical Constant> Saturn mean radius [m] (m=1)[Saturn-R]*3
[Saturn-M]<Astronomical Constant> Saturn mass [kg] (kg=1)2*[Saturn-M]
[Saturn-D]<Astronomical Constant> Saturn-Sun distance - semi major axis [m] (m=1)[Saturn-D]*3
[Uranus-R]<Astronomical Constant> Uranus mean radius [m] (m=1)2*[Uranus-R]
[Uranus-M]<Astronomical Constant> Uranus mass [kg] (kg=1)[Uranus-M]*3
[Uranus-D]<Astronomical Constant> Uranus-Sun distance - semi major axis [m] (m=1)2*[Uranus-D]
[Neptune-R]<Astronomical Constant> Neptune mean radius [m] (m=1)[Neptune-R]*3
[Neptune-M]<Astronomical Constant> Neptune mass [kg] (kg=1)2*[Neptune-M]
[Neptune-D]<Astronomical Constant> Neptune-Sun distance - semi major axis [m] (m=1)[Neptune-D]*3
titleRandom Variables
[Uni]Random variable - Uniform continuous distribution U(0,1), usage example: 2*[Uni]2*[Uni]
[Int]Random variable - random integer - usage example sin( 3*[Int] )[Int]*3
[Int1]Random variable - random integer - Uniform discrete distribution U{-10^1, 10^1} - usage example sin( 3*[Int1] )2*[Int1]
[Int2]Random variable - random integer - Uniform discrete distribution U{-10^2, 10^2} - usage example sin( 3*[Int2] )[Int2]*3
[Int3]Random variable - random integer - Uniform discrete distribution U{-10^3, 10^3} - usage example sin( 3*[Int3] )2*[Int3]
[Int4]Random variable - random integer - Uniform discrete distribution U{-10^4, 10^4} - usage example sin( 3*[Int4] )[Int4]*3
[Int5]Random variable - random integer - Uniform discrete distribution U{-10^5, 10^5} - usage example sin( 3*[Int5] )2*[Int5]
[Int6]Random variable - random integer - Uniform discrete distribution U{-10^6, 10^6} - usage example sin( 3*[Int6] )[Int6]*3
[Int7]Random variable - random integer - Uniform discrete distribution U{-10^7, 10^7} - usage example sin( 3*[Int7] )2*[Int7]
[Int8]Random variable - random integer - Uniform discrete distribution U{-10^8, 10^8} - usage example sin( 3*[Int8] )[Int8]*3
[Int9]Random variable - random integer - Uniform discrete distribution U{-10^9, 10^9} - usage example sin( 3*[Int9] )2*[Int9]
[nat]Random variable - random natural number including 0 - usage example sin( 3*[nat] )[nat]*3
[nat1]Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^1} - usage example sin( 3*[nat1] )2*[nat1]
[nat2]Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^2} - usage example sin( 3*[nat2] )[nat2]*3
[nat3]Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^3} - usage example sin( 3*[nat3] )2*[nat3]
[nat4]Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^4} - usage example sin( 3*[nat4] )[nat4]*3
[nat5]Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^5} - usage example sin( 3*[nat5] )2*[nat5]
[nat6]Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^6} - usage example sin( 3*[nat6] )[nat6]*3
[nat7]Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^7} - usage example sin( 3*[nat7] )2*[nat7]
[nat8]Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^8} - usage example sin( 3*[nat8] )[nat8]*3
[nat9]Random variable - random natural number including 0 - Uniform discrete distribution U{0, 10^9} - usage example sin( 3*[nat9] )2*[nat9]
[Nat]Random variable - random natural number - usage example sin( 3*[Nat] )[Nat]*3
[Nat1]Random variable - random natural number - Uniform discrete distribution U{1, 10^1} - usage example sin( 3*[Nat1] )2*[Nat1]
[Nat2]Random variable - random natural number - Uniform discrete distribution U{1, 10^2} - usage example sin( 3*[Nat2] )[Nat2]*3
[Nat3]Random variable - random natural number - Uniform discrete distribution U{1, 10^3} - usage example sin( 3*[Nat3] )2*[Nat3]
[Nat4]Random variable - random natural number - Uniform discrete distribution U{1, 10^4} - usage example sin( 3*[Nat4] )[Nat4]*3
[Nat5]Random variable - random natural number - Uniform discrete distribution U{1, 10^5} - usage example sin( 3*[Nat5] )2*[Nat5]
[Nat6]Random variable - random natural number - Uniform discrete distribution U{1, 10^6} - usage example sin( 3*[Nat6] )[Nat6]*3
[Nat7]Random variable - random natural number - Uniform discrete distribution U{1, 10^7} - usage example sin( 3*[Nat7] )2*[Nat7]
[Nat8]Random variable - random natural number - Uniform discrete distribution U{1, 10^8} - usage example sin( 3*[Nat8] )[Nat8]*3
[Nat9]Random variable - random natural number - Uniform discrete distribution U{1, 10^9} - usage example sin( 3*[Nat9] )2*[Nat9]
[Nor]Random variable - Normal distribution N(0,1) - usage example cos( 3*[Nor]+1 )[Nor]*3
titleMetric Prefixes
[%]<Ratio, Fraction> Percentage = 0.012*[%]
[%%]<Ratio, Fraction> Promil, Per mille = 0.001[%%]*3
[Y]<Metric prefix> Septillion / Yotta = 10^242*[Y]
[sept]<Metric prefix> Septillion / Yotta = 10^24[sept]*3
[Z]<Metric prefix> Sextillion / Zetta = 10^212*[Z]
[sext]<Metric prefix> Sextillion / Zetta = 10^21[sext]*3
[E]<Metric prefix> Quintillion / Exa = 10^182*[E]
[quint]<Metric prefix> Quintillion / Exa = 10^18[quint]*3
[P]<Metric prefix> Quadrillion / Peta = 10^152*[P]
[quad]<Metric prefix> Quadrillion / Peta = 10^15[quad]*3
[T]<Metric prefix> Trillion / Tera = 10^122*[T]
[tril]<Metric prefix> Trillion / Tera = 10^12[tril]*3
[G]<Metric prefix> Billion / Giga = 10^92*[G]
[bil]<Metric prefix> Billion / Giga = 10^9[bil]*3
[M]<Metric prefix> Million / Mega = 10^62*[M]
[mil]<Metric prefix> Million / Mega = 10^6[mil]*3
[k]<Metric prefix> Thousand / Kilo = 10^32*[k]
[th]<Metric prefix> Thousand / Kilo = 10^3[th]*3
[hecto]<Metric prefix> Hundred / Hecto = 10^22*[hecto]
[hund]<Metric prefix> Hundred / Hecto = 10^2[hund]*3
[deca]<Metric prefix> Ten / Deca = 102*[deca]
[ten]<Metric prefix> Ten / Deca = 10[ten]*3
[deci]<Metric prefix> Tenth / Deci = 0.12*[deci]
[centi]<Metric prefix> Hundredth / Centi = 0.01[centi]*3
[milli]<Metric prefix> Thousandth / Milli = 0.0012*[milli]
[mic]<Metric prefix> Millionth / Micro = 10^-6[mic]*3
[n]<Metric prefix> Billionth / Nano = 10^-92*[n]
[p]<Metric prefix> Trillionth / Pico = 10^-12[p]*3
[f]<Metric prefix> Quadrillionth / Femto = 10^-152*[f]
[a]<Metric prefix> Quintillionth / Atoo = 10^-18[a]*3
[z]<Metric prefix> Sextillionth / Zepto = 10^-212*[z]
[y]<Metric prefix> Septillionth / Yocto = 10^-24[y]*3
titleUnits of Length
[m]<Unit of length> Metre / Meter (m=1)2*[m]
[km]<Unit of length> Kilometre / Kilometer (m=1)[km]*3
[cm]<Unit of length> Centimetre / Centimeter (m=1)2*[cm]
[mm]<Unit of length> Millimetre / Millimeter (m=1)[mm]*3
[inch]<Unit of length> Inch (m=1)2*[inch]
[yd]<Unit of length> Yard (m=1)[yd]*3
[ft]<Unit of length> Feet (m=1)2*[ft]
[mile]<Unit of length> Mile (m=1)[mile]*3
[nmi]<Unit of length> Nautical mile (m=1)2*[nmi]
titleUnits of Area
[m2]<Unit of area> Square metre / Square meter (m=1)[m2]*3
[cm2]<Unit of area> Square centimetre / Square centimeter (m=1)2*[cm2]
[mm2]<Unit of area> Square millimetre / Square millimeter (m=1)[mm2]*3
[are]<Unit of area> Are (m=1)2*[are]
[ha]<Unit of area> Hectare (m=1)[ha]*3
[acre]<Unit of area> Acre (m=1)2*[acre]
[km2]<Unit of area> Square kilometre / Square kilometer (m=1)[km2]*3
titleUnits of Volume
[mm3]<Unit of volume> Cubic millimetre / Cubic millimeter (m=1)2*[mm3]
[cm3]<Unit of volume> Cubic centimetre / Cubic centimeter (m=1)[cm3]*3
[m3]<Unit of volume> Cubic metre / Cubic meter (m=1)2*[m3]
[km3]<Unit of volume> Cubic kilometre / Cubic kilometer (m=1)[km3]*3
[ml]<Unit of volume> Millilitre / Milliliter (m=1)2*[ml]
[l]<Unit of volume> Litre / Liter (m=1)[l]*3
[gall]<Unit of volume> Gallon (m=1)2*[gall]
[pint]<Unit of volume> Pint (m=1)[pint]*3
titleUnits of Time
[s]<Unit of time> Second (s=1)2*[s]
[ms]<Unit of time> Millisecond (s=1)[ms]*3
[min]<Unit of time> Minute (s=1)2*[min]
[h]<Unit of time> Hour (s=1)[h]*3
[day]<Unit of time> Day (s=1)2*[day]
[week]<Unit of time> Week (s=1)[week]*3
[yearj]<Unit of time> Julian year = 365.25 days (s=1)2*[yearj]
titleUnits of Mass
[kg]<Unit of mass> Kilogram (kg=1)[kg]*3
[gr]<Unit of mass> Gram (kg=1)2*[gr]
[mg]<Unit of mass> Milligram (kg=1)[mg]*3
[dag]<Unit of mass> Decagram (kg=1)2*[dag]
[t]<Unit of mass> Tonne (kg=1)[t]*3
[oz]<Unit of mass> Ounce (kg=1)2*[oz]
[lb]<Unit of mass> Pound (kg=1)[lb]*3
titleUnits of Information
[b]<Unit of information> Bit (bit=1)2*[b]
[kb]<Unit of information> Kilobit (bit=1)[kb]*3
[Mb]<Unit of information> Megabit (bit=1)2*[Mb]
[Gb]<Unit of information> Gigabit (bit=1)[Gb]*3
[Tb]<Unit of information> Terabit (bit=1)2*[Tb]
[Pb]<Unit of information> Petabit (bit=1)[Pb]*3
[Eb]<Unit of information> Exabit (bit=1)2*[Eb]
[Zb]<Unit of information> Zettabit (bit=1)[Zb]*3
[Yb]<Unit of information> Yottabit (bit=1)2*[Yb]
[B]<Unit of information> Byte (bit=1)[B]*3
[kB]<Unit of information> Kilobyte (bit=1)2*[kB]
[MB]<Unit of information> Megabyte (bit=1)[MB]*3
[GB]<Unit of information> Gigabyte (bit=1)2*[GB]
[TB]<Unit of information> Terabyte (bit=1)[TB]*3
[PB]<Unit of information> Petabyte (bit=1)2*[PB]
[EB]<Unit of information> Exabyte (bit=1)[EB]*3
[ZB]<Unit of information> Zettabyte (bit=1)2*[ZB]
[YB]<Unit of information> Yottabyte (bit=1)[YB]*3
titleUnits of Energy
[J]<Unit of energy> Joule (m=1, kg=1, s=1)2*[J]
[eV]<Unit of energy> Electronovolt (m=1, kg=1, s=1)[eV]*3
[keV]<Unit of energy> Kiloelectronovolt (m=1, kg=1, s=1)2*[keV]
[MeV]<Unit of energy> Megaelectronovolt (m=1, kg=1, s=1)[MeV]*3
[GeV]<Unit of energy> Gigaelectronovolt (m=1, kg=1, s=1)2*[GeV]
[TeV]<Unit of energy> Teraelectronovolt (m=1, kg=1, s=1)[TeV]*3
titleUnits of Speed
[m/s]<Unit of speed> Metre / Meter per second (m=1, s=1)2*[m/s]
[km/h]<Unit of speed> Kilometre / Kilometer per hour (m=1, s=1)[km/h]*3
[mi/h]<Unit of speed> Mile per hour (m=1, s=1)2*[mi/h]
[knot]<Unit of speed> Knot (m=1, s=1)[knot]*3
titleUnits of Acceleration
[m/s2]<Unit of acceleration> Metre / Meter per square second (m=1, s=1)2*[m/s2]
[km/h2]<Unit of acceleration> Kilometre / Kilometer per square hour (m=1, s=1)[km/h2]*3
[mi/h2]<Unit of acceleration> Mile per square hour (m=1, s=1)2*[mi/h2]
titleUnits of Angle
[rad]<Unit of angle> Radian (rad=1)[rad]*pi
[deg]<Unit of angle> Degree of arc (rad=1)180*[deg]
[']<Unit of angle> Minute of arc (rad=1)[']*3
['']<Unit of angle> Second of arc (rad=1)2*['']
titleParser Symbol
(Left parentheses(3+2)/4
)Right parentheses(3+2)/4
,Comma (function parameters)min(2,3,1)
;Semicolon (function parameters)min(2;3;1)

Placeholders, PUTs, and Assignments

TouchPoint’s Placeholder, PUT, and Assignment features work hand in hand to add considerable power to your marketing campaigns. They let you create and populate fields based on your own conditions, then reference these fields in subsequent segments or output them to your mail file or email engine. For example, you might decide to create a field called PURCHASE_CATEGORY, then populate it with values such as “Outdoor” or “Cooking” according to the types of products purchased and amount spent by each customer. Having created this field, you can then reference it in your campaign segments as if it were in your database; or you can write it to an output file or pass it as dynamic content in an email.

Placeholders are custom campaign variables that attach to each individual in your campaign universe. They’re called Placeholders because they’re created as blank fields in your campaign work table, but then get assigned by the segmentation logic (using the PUT command) during campaign processing.

The PUT command is how you assign values to placeholders. You can assign a constant value, like ‘Y’ or ‘N’, a database field like Gender or Income, or even a calculated value such as total dollars spent within a given time period. PUTs can be useful for prospecting and list allocation, where a single individual can exist on multiple lists, because you can use a PUT to capture what list - or even all matching lists - to credit for the prospect. Also, a segment can have multiple PUT commands.

Finally, Assignments are special segments that exist solely for assigning values to Placeholders. Assignment segments never select individuals. Instead, the logic is evaluated and if found true, the PUT commands attached to these segments are executed. You can think of this as setting a flag on each consumer based on whether a set of conditions is true, although technically a PUT command can assign any type of data to a Placeholder: numeric, character, dates, etc.

  • Placeholders are not useful without PUTs.
  • PUTs cannot be created without Placeholders.
  • Assignment segments cannot be created without Placeholders and PUTs.

Placeholder Fields

TouchPoint Placeholders are blank fields on your campaign work table that you assign values to during the campaign processing. Unlike Pass-Thru fields, Placeholders are useful in cases where you need to capture specific data based on what segment selected each individual. Placeholders fields are required before you can create a PUT Command.

titleTo Create a Placeholder Field

Placeholder fields can be created from the Assignments dialog or from the PUT Manager.

From the Assignments Dialog:

  1. From the TouchPoint Criteria tab, either click the Assignments toolbar button (Image Added) or click the Criteria menu and choose Assignments.
  2. From the Assignments dialog, Switch to the Put Placeholders
  3. From the toolbar, choose the New Placeholder button (Image Added).
  4. Complete the Placeholder dialog, then click OK.

From the PUT Manager:

  1. Click any selection segment in your campaign.
  2. Click on the PUT property in the Properties Pane to open PUT Manager.
  3. From the toolbar, choose the New Placeholder button (Image Added).
  4. Complete the Placeholder dialog, then click OK.

The Placeholder DialogImage AddedThe PUT Command

PUT commands are used inside TouchPoint segments to write (or PUT) data specific to each person selected by that segment into Placeholder variables. The data can be a constant string, a field from another table, an expression, an aggregate, and even a User Defined Function (UDF).

titleTo Add a PUT Command to a Segment
  1. Locate the segment PUT property in the Properties Pane.
  2. Click the ellipsis button to open PUT Manager.
  3. Enter your PUT data, choose a Placeholder Field, and set an option if needed.
  4. Click OK to commit your changes and close the dialog.

PUT command in Segment Properties PaneImage Added

  • PUT commands are only executed if the segment evaluates to TRUE for the individual being processed.
  • Exclude segments cannot have PUT commands, but parent segments can.
  • Multiple PUT commands can be created for a segment.

PUT Manager

TouchPoint’s PUT Manager lets you create, delete, and edit PUT commands.

Put ManagerImage AddedElements of PUT Commands

There are three elements needed to create a PUT command.

The PUT commandImage Added



PUT Data Image Added

The data being put into the Placeholder field. Can be a field, aggregate, user-defined function (UDF), variable, or constant text.

“Into” Destination

The Placeholder field that will contain the PUT data.

“Or” Option

Indicates what PUT should do if the Placeholder has already been assigned data. Available options are  Discard, Append, and Overwrite.

The PUT Manager Toolbar

The following commands are available on the PUT Manager toolbar.



Image Added


Creates a new PUT command

Image Added


Deletes the selected PUT command

Image Added

New Placeholder

Opens the Placeholder dialog to create a new Placeholder field

Image Added


Copies the selected PUTs to the clipboard

Image Added


Pastes PUTs from the clipboard to the cursor position

Assignment Segments

TouchPoint Assignment Segments are used for the sole purpose of executing PUT Commands, which assign values to Placeholder Fields. Assignment segments don’t appear in the campaign selection criteria because they don’t actually “select” anything, they’re simply evaluated for each person being processed by the campaign. Think of Assignment Segments as a way to create variables that you can use just like a field in other places within TouchPoint.

titleTo Create an Assignment Segment
  1. From the TouchPoint Criteria tab, either click the Assignments toolbar button (Image Added) or click the Criteria menu and choose Assignments.
  2. On the Assignments dialog, either (a) click the New Assignment Segment button (Image Added), or (b) drag the “(New Segment)” item from the tree on the left and drop it beneath the Assignments node on the right. You can also drag an existing segment from the library and drop it beneath the Assignments node.
  3. In the Segment Editor, define your segment conditions, then click OK to return to the Assignments dialog.
  4. Click the PUT ellipsis button to open PUT Manager.
  5. On the PUT Manager, add one or more PUT commands, then click OK to return to the Assignments dialog.
  6. Click OK to save your Assignments and return to TouchPoint.
  • Assignment Segments cannot be completed without one or more Placeholder Fields.
  • At least one PUT Command is required for each Assignment segment.

The Assignments Dialog

The Assignments dialog lets you create Assignment segments, Placeholder Fields, and PUT commands. It has two tabs:

  • The Assignment Segments tab is where Assignment segments are created, edited, and deleted, along with their associated PUT commands.
  • The PUT Placeholders tab is where you manage Placeholder Fields.

Image Added

Assignment Segments Tab

There are three steps involved in creating an assignment segment:

  1. Make sure you have at least one Placeholder Field
  2. Using the Segment Editor, create your Assignment segment criteria, give the segment a name, and click OK.
  3. Click the ellipsis button in the Puts column to open the PUT Manager, then create the PUTs you want the segment to execute.

Put Placeholders Tab

This tab lets you view, create, edit, and delete Placeholder Fields. To create one:

  1. From the toolbar, choose the New Placeholder button (Image Added).
  2. Type in a name for the field, choose a datatype, and enter a default value if desired.
  3. Click OK.

The Assignments Dialog Toolbar

The following commands are available on the Assignments dialog toolbar.



Image Added

New Assignment Segment

Creates a new Assignment Segment.

Image Added

New Placeholder

Creates a new Placeholder Field.

Image Added


Edits the selected Assignment Segment or Placeholder Field.

Image Added


Deletes the selected Assignment Segment or Placeholder Field.

Image Added


Clears all Assignment Segments or Placeholder Fields.


TouchPoint Constraints are used to apply additional filtering against your campaign universe. Common uses of constraints include:

  • Householding; e.g., one catalog or direct mail piece per household.
  • Max-per-site, such as 5 pieces per company.
  • One solicit per email address, for email campaigns.
Before you can use constraints, you must pass through all the fields the constraint needs to reference. For example, a “one per email address” constraint requires the email address to be selected as a Pass-Thru field.

You can create multiple constraints; for example, a campaign targeting both businesses and consumer can apply both a max-per-site constraint to businesses as well as a one-per-household constraint to consumers. Generally speaking, whenever you need to limit campaign output to a certain number of solicits for each value of another field, constraints are probably the best option.

Constraints are available from three places within TouchPoint:

  • From TouchPoint’s Criteria and Tracking tabs, either by clicking the Constraints toolbar button (  ) or by choosing Campaign > Apply Constraints from the menu.
  • From TouchPoint’s MarketFlow tab, in Branch Manager, by clicking the Constraints toolbar button.
  • From TouchPoint’s MarketFlow tab, in the Touch action, by clicking the Constraints toolbar button.

The Constraints Dialog

The Constraints Dialog lets you add, edit, and delete constraints. Each constraint is shown as a separate row in a grid, and they’re evaluated from the top down.

Constraint Attributes

Following are the attributes shown for each constraint.




The field on which a constraint is based. For example, a “one per household” constraint will be based on a household identifier (e.g., HouseholdID).


This column lets you apply a filter to your constraint. For example, if you want to apply a constraint to businesses, you might enter a filter like “BusinessFlag = ‘Y’”.


Enter a description of your constraint here.


This is the number of solicits you want to allow for each value of the selected field. For example, if you want to mail one per household, your field will be the household identifier, and your limit will be one.


This attribute lets you decide how TouchPoint should choose the records that are chosen for output. Refer to the Constraint Priority section for more information.


Order works in conjunction with Priority, letting you sort the data either ascending or descending.


This column indicates the total number of values for the Field that was chosen in column one, after applying the Filter specified in column two.


This column shows the total number of records (i.e., selected consumers) that match the specified Filter.


The Kept column shows the number of Contacts that survived the constraint. These are the consumers that will be solicited.


This indicates the type of constraint. There are basically two: a standard constraint and an advanced SQL constraint. The SQL version can be saved to a script file or type directly into a window. SQL constraints are advanced features that require knowledge of SQL programming, but they’re very powerful.


If the Type column is set to “SQL Script”, this points to what script is being used.

The Constraint Toolbar

The following commands are available on the Constraint Toolbar.



Adds a constraint.

Duplicates the active constraint (row).

Deletes the active constraint (row).

Creates a filter on the highlighted constraint.

Moves a constraint (row) up.

Moves a constraint (row) down. 

If the highlighted constraint is SQL, this option opens the SQL query for editing.


Applies the constraints

Runs only the highlighted constraint

Validates your constraints by checking for errors

Constraint Priority

Once you enter the number of contacts you want to solicit per site, TouchPoint lets you choose which contacts to select. You can prioritize your solicitation in three ways:

Random - This option randomly selects contacts from your universe up to the number, or limit, you specify.

Cell - This option selects contacts based on where in the selection hierarchy they were chosen. Setting [Cell] as the priority directs TouchPoint, by default, to favor contacts that fall in the highest cells in the hierarchy.

(Pass-Thru Field) - If you select a field, TouchPoint sorts by that field (either ascending or descending based on the “Order” setting), then chooses the top xx records until the “Limit” is met.

TouchPoint Selection Criteria Menu and Toolbar

The TouchPoint toolbar provides quick access to commonly used commands in the TouchPoint Criteria tab. Click the icon once to carry out the action represented by that icon.



Menu Equivalent

Opens a new TouchPoint

File > New

Opens the "Open" Dialog.

File > Open

Saves the TouchPoint

File > Save

Opens the Print Preview Dialog.

File > Print

Opens the Campaign/Frequency Report Dialog.

File > Reports

Opens the Scheduler module.

File > Schedule

Opens the Properties Dialog.

File > Properties


Exits the TouchPoint module.

File > Exit

Allows you to Sequentially undo up to the last 20 actions.

Edit > Undo

Allows you to Sequentially redo up to the last 20 actions.

Edit > Redo

Copies the selected content.

Edit > Copy

Pastes the clipboard content.

Edit > Paste

Removes everything in the description section.

Edit > Clear Criteria

Applies change to all highlighted cells.

Edit > Fill...

Displays the description section in the classic view

Edit > Classic

Displays the description section in the classic view

Edit > Compact

Opens the Constraints dialog, allowing you to enter criteria for selecting contacts. 

Edit > Apply Constraints

Checks your campaign to see if it is valid prior to submitting or posting.

Edit > Validate

Submits your open campaign for execution.

Edit > Submit

Commits your campaign.

Edit >Commit

Submits your MarketFlow for execution.

Edit >Start

Allows you to view the tables used in the campaign.

Edit > Table Filters

Allows you to select Pass-Thru fields to attach additional information to your selected customers.

Edit > Pass-Thru Fields

Allows you to add/remove Excludes.

Edit > Excludes

Opens the Segment Editor window.

Criteria > Edit Segment

Duplicates the highlighted segment.

Criteria > Duplicate

Deletes the highlighted segment.

Criteria > Delete

Removes the dependency, if any, of the highlighted segment.

Criteria > Demote

Makes the highlighted cell a dependent upon the previous segment.

Criteria > Promote

Moves the highlighted segment up.

Criteria > Move Up

Moves the highlighted segment down.

Criteria > Move Down


Opens the Frequency Split window. See Frequency Split for more information about this option.

Criteria > Frequency > Split


Opens the Frequency Insert window. See Frequency Insert for more information about this option.

Criteria > Frequency > Insert

Opens the Properties dialog.

Criteria > Properties

Opens the Templates dialog.

Campaign > Choose Template


Opens the Frequency Report Setup window.

Campaign > Matching Customers


Opens the Work Table

Campaign > Work Table


Opens and displays the table to which your current campaign has been posted. This feature is not available if the post has not been performed.

Campaign > Posted Customers

Displays general information from the Tracking tab

Campaign > Campaign Tracking


Removes all criteria from the current campaign

Campaign > Uncommit

Opens the TouchPoint Campaign Editor

Tools > Launch TouchPoint Campaign Editor

Opens the TouchPoint Template Wizard window.

Tools > Manage TouchPoint Templates

Opens the Solicit Template Wizard window.

Tools > Manage Solicit Templates


Opens the Options dialog.

Tools > Options


Opens the TouchPoint help files.

Tools > TouchPoint Help