Digital Platform API - Legacy BSS file format

The Batch Segment Service provides the ability to upload segment data files in a variety of formats. For more information, see the examples below.

Note

The Avro format described in BSS Avro File Format, provides support for a broader variety of user identifiers. The method described in this topic has been the standard format in the past, but it is expected to be deprecated in the future as user identification increasingly relies on EIDs (extended IDs) and publisher first-party identifiers rather than cookies.

Tip

Speak with your account representative for assistance with configuring our system to accept your particular file format.

Format overview

Each line of the file will specify a minimum of one UID (user ID) and one or more SEG blocks. The separators are configurable.

The following table describes the ordering of the blocks and separators that compose each line.

| UID | SEPARATOR1 | SEG | SEPARATOR2 | SEG | SEPARATOR4 | SEG | SEPARATOR2 | SEG | SEPARATOR5 | DOMAIN |

UID

Name Type Description Example
UID int The Xandr user ID being added to, or removed from, a segment. 5727816213491965430

SEG block

The SEG block describes the segment(s) to which the user is being added or removed and it will contain data such as segment ID or a user-defined segment code.

Construct a SEG block as follows:

| SEG_FIELD | SEPARATOR3 | SEG_FIELD |

SEG_FIELD block

The following table list the possible values that may be included in the SEG_FIELD block. Where defaults exist, they will be applied unless otherwise specified.

Note

Each SEG block must be regular, meaning that it must have all fields that you have chosen to include. For example, if you have included the VALUE field but don't have a value for a particular user, you should use 0 as the value.

Name Type Description Example
SEG_ID int The Xandr segment ID.
Default: This is generated by the system when the segment is created.
1234567890
SEG_CODE string A user-defined name for the segment. You may include SEG_CODE or SEG_ID but not both. "18-35_autobuy"
EXPIRATION int The lifetime of the segment, starting at the value of TIMESTAMP. Specified in minutes. A value of 0 means that the user will expire in the segment after the maximum allowed 180 days; -1 means that the user will be removed from this segment.

Default: The default value is specified on the segment level when the segment is created. If none exists there, your Batch Segment API configuration setting is used. Using this field will override the default.
1440
TIMESTAMP int The time at which you would like your segment to go into effect. A UNIX timestamp, down to the second. If a timestamp is submitted to greater specificity (down to the millisecond, for example) then the user will not be properly written to the segment upon upload.
Default: The current time.
1278250469
VALUE int A numeric value you would like to assign to a segment. 310

Note:
The maximum accepted value is 2147483647. (If a value above this is included, there may be behavior unpredictability such as the pixel fire not processing. Therefore, the user will not be added to the segment. Other times, it will be processed, however the value set will be much smaller than what was passed.)
MEMBER_ID int This field is required only if you use a SEG_CODE and upload other members' data in addition to your own.
Default: The member_id.
958

DOMAIN

Name Type Description
DOMAIN string You may optionally specify a domain to associate with this user ID.

Separators

Read on for definitions of each separator type. Each separator must be different, except for SEPARATOR1 and SEPARATOR3, which may be identical (SEPARATOR2 and SEPARATOR4, cannot be identical). Each separator must be only 1 character in length.

Caution

Disallowed characters

The following characters are not allowed as separators: [ ] ( ) { } $ \ / | ? * + -

SEPARATOR1

Separates the user ID from the segment list (or SEG block). There may be only one per line. Required.

SEPARATOR2

Separates segments within the segment list. There may be many per line, since multiple segments can be associated with a single UID. Required if there is more than one segment.

SEPARATOR3

Separates fields within each SEG block. If set, it must remain the same for each line of the file (except after SEPARATOR4). Required if there is more than one field within the SEG.

SEPARATOR4

The user will be removed from any segments appearing after this separator. Optional.

SEPARATOR5

The user will be added to the DOMAIN or looked up in the set designated directly after this separator. Optional.

Note

Mobile Device ID Data Fields

In order to pass in device IDs from mobile devices, pass in SEPARATOR5 at the end of a line followed by one of the numbers shown in the table below. Each number corresponds to a different mobile device identification scheme. This table assumes ^ is used as SEPARATOR5:

Separator and Number Value
^3 idfa
^4 sha1udid
^5 md5udid
^7 openudid
^8 aaid
^9 windowsadid
^10 rida

^6 sha1mac was deprecated as of May 7th, 2019. Do not use.

Examples

The following examples illustrate scenarios derived from real use cases.

Note

The examples below show separator values that may differ from the ones that were set up in your initial batch segment configuration. Contact our Services team, if you wish to update your configuration settings.

Example 1

A client is adding user 12345678900987654321 to segments 10000 and 10001 with an expiration time of 1440 (one day). The client is also removing user 12345678900987654321 from segments 10002 and 10003.

Field Value
UID Xandr user ID
SEPARATOR1 ","
SEPARATOR2 ";"
SEPARATOR3 ":"
SEG_FIELD [SEG_ID, EXPIRATION]
12345678900987654321,10000:1440;10001:1440;10002:-1;10003:-1

Example 2

A client is adding user 12345678900987654321 to segments with codes "auto_intender" and "nike_shopper" with the default expiration time. The client is also removing (using SEPARATOR4) user 12345678900987654321 from segments with codes "bicycle_intender" and "newbalance_shopper".

Field Value
UID Xandr user ID
SEPARATOR1 ","
SEPARATOR2 ";"
SEPARATOR4 "\t"
SEG_FIELD [SEG_CODE]

Note

\t refers to the horizontal tab character. It moves the cursor a tab width. The example below is using \t to show where the space will appear.

12345678900987654321,auto_intender;nike_shopper\tbicycle_intender;newbalance_shopper

Example 3

In the example, below, the client is adding user 12345678900987654321 to segments 10000 and 10001 with no expiration (which means the user will expire in the segment after the maximum allowed 180 days), and they are removing the user from segment 10002.

Field Value
UID Xandr user ID
SEPARATOR1 "\t"
SEPARATOR3 "\t"
SEG_FIELD [TIMESTAMP, SEG_ID, VALUE, EXPIRATION]

Warning

\t refers to the horizontal tab character. It moves the cursor a tab width. The example below is using \t to show where the space will appear.

12345678900987654321\t1320689131\t10000\t0\t0
12345678900987654321\t1320689131\t10001\t0\t0
12345678900987654321\t1320689131\t10002\t0\t-1

Example 4

A client is adding user "abcdefg" to segments 10000 and 10001 with an expiration time of 1440 (one day). The client is also adding user "abcdefg" to cross-segments 10002 and 10003.

Tip

This client is set as an XSEG member.

Field Value
UID Xandr user ID
SEPARATOR1 ","
SEPARATOR2 ";"
SEPARATOR3 ":"
SEG_FIELD [SEG_ID, EXPIRATION]
uses_external_uids true
abcdefg,10000:1440;10001:1440
abcdefg,10002:1440;10003:1440

Example 5

A client is adding user 12345678900987654321 to segments with code "car_like" and "bike_like" with the default expiration time.

Tip

This client uses SEG_CODE and uploads under different member names.

Field Value
UID Xandr user ID
SEPARATOR1 ","
SEPARATOR2 ";"
SEPARATOR3 ":"
SEPARATOR4 "\t"
SEG_FIELD [MEMBER_ID, SEG_CODE]

Note

\t refers to the horizontal tab character. It moves the cursor a tab width.

12345678900987654321,400:car_like;500:bike_like

Example 6

A client is adding mobile user IDFA (ID for Advertisers) AEBE52E7-03EE-455A-B3C4-E57283966239 to segments 10000, 10001, 10002, 10003 for varying amounts of time, via the Batch Segment Service. This method often has low match rates on our platform because even if IDs are successfully submitted to our service, it doesn't mean that the device ID has actually been seen on our platform. Note, separator5 appended which designates the use of mobile identifiers. The value "3", designates Apple's IDFA value—other values can be found above in the Mobile Device ID Data Fields table.

Field Value
IDFA Apple ID for Advertisers.
SEPARATOR1 ","
SEPARATOR2 ";"
SEPARATOR3 ":"
SEPARATOR4 "\t"
SEPARATOR5 "^"
SEG_FIELD [SEG_ID,EXPIRATION]

Note

\t refers to the horizontal tab character. It moves the cursor a tab width.

AEBE52E7-03EE-455A-B3C4-E57283966239,10000:1440;10001:1440;10002:-1;10003:-1^3