Create Tactic

Once you have a campaign and line item, you must create a tactic in order to buy impressions

A Tactic in Life is a reusable, configurable step that defines how and when to send a specific message or perform an action within a workflow. Each Tactic encapsulates its targeting rules, content payload, and delivery logic. Tactics are designed to be chained together into larger strategies or flows, while still remaining independently testable, measurable, and reusable across campaigns. In practice, a Tactic represents the smallest actionable unit of messaging logic that the Life platform can execute.

Tactics have dozens of targeting options. We will be rolling out these targeting options over a period of months to be available to use within the API.

Endpoint

POST

https://lifeapi.pulsepoint.com/RestApi/v2/account/{accountId}/tactics

Path Parameters

NameData TypeNotes
account_idintegerThe account ID you are creating tactics under

Request Field List

tactics

NameData TypeRequiredDefaultNotes
lineItemIdintegeryesThe ID of the line item associated with this tactic.
namestringyes
descriptionstringno
enabledbooleannotrueWhether you want the tactic to be enabled or disabled upon creation
baseBidPricenumberno1.00The base bid price for the tactic. Must be less than or equal to Max Bid Price.
maxBidPricenumberno50The maximum bid price for the tactic. Must be greater than or equal to Base Bid Price.
customFieldSettingsobjectconditionalIf you have a mandatory custom field setting in Life at the tactic level, this object will be mandatory. Otherwise, this object is optional.
budgetDistributionobjectnoDollarsHow you want to allocate spend across tactics. This object allows you to set the values across tactics.
maxSpendPerTacticobjectnoAn optional setting allowing the user to define an amount the tactic cannot spend more than over a given period of time
managementFeeobjectnoAn override option if you only want to apply a management fee to some tactics and not others
mediaOptimizationobjectno
frequencyCapobjectnoAn override option if you want to have a different frequency cap at the tactic level
creativeAssignmentsarray of objectsnoWhile this object isn't required for creating a tactic, it will not serve without at least one creative assigned
targetingobjectnoNarrowing the scope of your ad impressions to certain audience, contextual, or supply filters.

lineItems.customFieldSetting

NameData TypeRequiredNotes
isNewFieldBooleanyesValues: true,false
fieldNameStringyesmust be unique to the account id if isNewField = true
fieldValueStringyes

tactics.budgetDistribution

Name

Data Type

Required

Default

Notes

type

ENUM String

yes

Valid Values: Dollars, Percent, Priority
This is the same as was set at the line item level. It is included in this object as a reference for the value you will set.

value

Number

yes

This is the allocation of this tactic in the given line item flight. Specifically, for Dollars: how much you want this tactic to spend. It cannot be more than the line item budget
Percentage: what piece of the pie you want this tactic to have
Priority: which tactic should get the next impression

tactics.maxSpendPerTactic

NameData TypeRequiredDefaultNotes
enabledbooleanYes
amountnumericYes
periodENUM StringNodayValid Values: "day" and "flight"

tactics.managementFee

NameData TypeRequiredDefaultNotes
typeENUM stringConditionalIf managementFee object is used, then it is required. Valid Values: Percentage, CPM, PercentageAndCPM, FixedCPM
percentageintegerConditionalRequired in management fee types of Percentage or PercentageAndCPM
cpmnumericConditionalRequired in management fee types of CPM , PercentageAndCPM , FixedCPM

tactics.mediaOptimization

NameData TypeRequiredDefaultNotes
typeENUM StringNoCPMValid Values: CPM, FLAT, CPC, CTR, CPA, Tactic_Reach, LineItem_Reach, Campaign_Reach, Viewability
goalNumericConditionalRequired for 'Viewability', 'CTR', 'CPA' optimization types
conversionPixelIdIntegerConditionalRequired for CPA optimization type

tactics.frequencyCap

NameData TypeRequiredDefaultNotes
applyFrequencyCapbooleanConditionalIf frequencyCap object is used, then it is required
timesintegeryes1-100
periodperiodyesValid Values: day, hour(s), week, month
hoursValueintegerconditionalOnly if hour(s) is the period used. Valid Values: 1 to 1000
crossDeviceENUM StringnoValid Values: Per Device, Per Person, Per Household
untrackablebooleannoInclude untrackable users
ipUntrackablebooleannoInclude IP-untrackable users

tactics.creativeAssignments

NameData TypeRequiredDefaultNotes
creativeIdintegeryesThe ID of the creative to be assigned to the tactic
weightintegeryesWeight is a percentage that should be used if you want one creative of the same adsize within a tactic to get more impressions than another creative. Total weight within adsize on a tactic must be 100
startDatestringnoexample: 2025-12-30 23:59:59
endDatestringnoexample: 2025-12-30 23:59:59

tactics.targeting.hcpByPractitioner

NameData TypeRequiredDefaultNotes
crossDeviceENUM stringnodevicevalid values: device, person, home_ip, practice_ip
npiReportingbooleannofalse
segmentsobject

tactics.targeting.hcpByPractitioner.segments

NameData TypeRequiredDefaultNotes
includebooleannovalid values: true, false
segmentIdintegerno
segmentTypeENUM stringnovalid values: practitioner, specialty

tactics.targeting.npiTargeting

NameData TypeRequiredDefaultNotes
crossDeviceENUM stringnodevicevalid values: device, person, home_ip, practice_ip
npiReportingbooleannofalse
listsarray of objectsConditional - either lists or npiNumbers object is neededAdd one or more existing lists of NPIs
npiNumbersobjectAdd individual NPIs to target

tactics.targeting.npiTargeting.lists

NameData TypeRequiredDefaultNotes
listIdstringyes
includebooleanyesvalid values: true, false

tactics.targeting.npiTargeting.npiNumbers

NameData TypeRequiredDefaultNotes
numbersarray of stringsyes
includebooleanyesvalid values: true, false

tactics.targeting.retargetingPixels

NameData TypeRequiredDefaultNotes
crossDeviceENUM stringnodevicevalid values: device, person, home_ip, practice_ip
recencyENUM stringyesvalid values: 1, 7, 15, 30, 60, 90, 90plus
pixelsarray of objectslist of retargeting pixels you are including or excluding

tactics.targeting.retargetingPixels.pixels

NameData TypeRequiredDefaultNotes
pixelIdintegeryes
includebooleanyesvalid values: true, false

tactics.targeting.behavioralSegments

NameData TypeRequiredDefaultNotes
crossDeviceENUM stringnodevicevalid values: device, person, household, household_ip
segmentsarray of objectsyes

tactics.targeting.behavioralSegments.segments

NameData TypeRequiredDefaultNotes
providerIdintegeryes
segmentIdintegeryes
includebooleanyesvalid values: true, false

tactics.targeting.healthPopulations

Name

Data Type

Required

Default

Notes

crossDevice

ENUM string

no

device

valid values: device, person, household, household_ip

segments

array of objects

yes

operator

Boolean

no

or

valid values: or, and
Whether you want a user to have to appear in every population or just one

historicalPeriod

ENUM string

yes

valid values: 3,30,90plus

tactics.targeting.healthPopulations.segments

NameData TypeRequiredDefaultNotes
meshCodestringyes
segmentTypeENUM stringyesvalid values: treatment, condition
includebooleanyesvalid values: true, false

tactics.targeting.iabNewCategories

NameData TypeRequiredDefaultNotes
categoryIdintegeryes
includebooleanyesvalid values: true, false

tactics.targeting.geoTargets

NameData TypeRequiredDefaultNotes
typestringyesvalid values: country, state, city,metro
valuesarray of stringsyesList of geo target values. For country use ISO (e.g., 'gbr', 'usa'), for state use ISO (e.g., 'NY', 'CA'), for city use name (e.g., 'Los Angeles', 'san francisco'), for metro use name (e.g., 'philadelphia'). All values included in the array must have the same parent
parentobject
includeENUM stringyesvalid values: true, false

tactics.targeting.geoTargets.parent

NameData TypeRequiredDefaultNotes
typeENUM stringyesvalid values: country, state
valuestringyesparent id of geoTargets.values

tactics.targeting.devices

NameData TypeRequiredDefaultNotes
deviceTypesarray of ENUM stringsyesvalid values: desktop, mobile, tablet, connected_tv, connected_device, set_top_box, ooh_device
includeENUM stringyesvalid values: true, false

tactics.targeting.domainsApps

NameData TypeRequiredDefaultNotes
domainListsarray of objectsnoone of the four objects is required
domainsarray of objectsno
appListsarray of objectsno
appsarray of objectsno

tactics.targeting.domainsApps.domainLists

NameData TypeRequiredDefaultNotes
listIdstringyes
includeENUM stringyesvalid values: true, false

tactics.targeting.domainsApps.domains

NameData TypeRequiredDefaultNotes
domainNamestringyesone of the four objects is required
includeENUM stringyesvalid values: true, false

tactics.targeting.domainsApps.appLists

NameData TypeRequiredDefaultNotes
listIdstringyes
includeENUM stringyesvalid values: true, false

tactics.targeting.domainsApps.apps

NameData TypeRequiredDefaultNotes
appNamestringyesone of the four objects is required
includeENUM stringyesvalid values: true, false

tactics.targeting.inventorySources

NameData TypeRequiredDefaultNotes
exchangesarray of stringsyes
includeENUM stringyesvalid values: true, false

tactics.targeting.inventoryTypes

NameData TypeRequiredDefaultNotes
typesENUM string of arraysyesvalid values: app, site
includeENUM stringyesvalid values: true, false

tactics.targetings.viewability

Name

Data Type

Required

Default

Notes

minViewabilityRate

integer

yes

valid values: 1 to 80 - the percentage viewable

provider

ENUM String

yes

valid values: DV
DV stands for Doubleverify