You can quickly migrate many offers from another system into your network by using our Import Offers feature. This feature takes a comma-separated values (CSV) file, which you can create with a spreadsheet program (like Microsoft Excel), and CSV file editor, or a simple text editor.
The steps for importing new offers and updating existing offers are slightly different. The list of all available offer fields is available in the List of Offer Fields section.
Bulk Creating New Offers
The first step is to create a CSV file, with the header row containing the fields you have information for. There are six required fields for new offers, shown in the example header row below. You can add any of the other few dozen fields to your header if you have data for them.
name,description,offer_url,preview_url,expiration_date,status
Tip: The order the fields appear in doesn’t matter.
Once you create the CSV file, input your offer information into it. If you use a date field, see our note on Using Date Fields in Spreadsheets.
Bulk Updating Existing Offers
To update offers in bulk, you also create a CSV file as described in the above section. The header row works differently, though: you must include the “id” field, so you can tell TUNE which offers to update, then include the fields you want to update for all of the offers in that file.
Note: If you don’t include the “id” field, TUNE assumes you want to create new offers instead of updating existing ones.
For example, if you want to change the status of a few offers from “pending” to “active”, your CSV file would look like:
id | status |
---|---|
40 | active |
58 | active |
74 | active |
80 | active |
82 | active |
96 | active |
Tip: If you’re planning to update a significant number of existing offers, consider exporting your offers as a CSV file to modify and re-upload.
Uploading Your Data
To import or update offers, go to the Company menu, and click on Customize Application. On the Customize Application page, scroll down until you reach the Import Data section, then click on Offers.
On that page, attach the file and click Upload. Once submitted, the file will begin processing. Depending on the volume of changes, the import can take up to 30 minutes to process. Once completed, you will see a new “Import Complete” notification on your Snapshot page.
If the message says any offers failed to save: Click on that message to see details of which offers didn’t get processed along with why. If you can’t see how to correct the problem in your CSV file, contact our customer support and have your CSV file and this error message available.
List of Offer Fields
Fields marked with * are required for new offers, and optional for existing offers.
Fields marked with ** are required for updating offers, and should not be included for new offers.
All other fields are optional. Do not include the * symbols when making your header rows.
Column Name | Description | Accepted Values | Example |
---|---|---|---|
name * | Name of the offer | Up to 255 characters | Offer name |
description * | Description of offer | Up to 65,535 characters | This is an offer description |
offer_url * | URL to the default landing page of the offer | Any URL (http:// included) along with defined macros | http://example.com?trans={transaction_id} |
preview_url * | URL to preview landing page | Any URL (http:// included) | http://example.com |
expiration_date * | Date and time the offer will expire (in UTC, not network time) | YYYY-MM-DD HH:MM:SS (See note below) |
2020-01-31 23:59:59 |
status * | Status of the offer | ‘active‘, ‘pending‘, ‘paused‘, ‘deleted‘ | active |
id ** | The ID of the offer if you are updating offers via CSV | Numeric ID of the offer | 42 |
advertiser_id | The ID of the advertiser account | numeric ID of existing advertiser | 20 |
protocol | Protocol for conversion tracking | ‘http‘ – HTTTP iFrame pixel ‘https‘ – HTTPS iFrame pixel ‘http_img‘ – HTTP Image pixel ‘https_img‘ – HTTPS Image pixel ‘server‘ – Server postback w/ transaction_id ‘server_affiliate‘ – Server postback w/ partner ID |
HTTP |
currency | Three character symbol of the country's currency | See a list of options here | USD |
payout_type | How partners are compensated is recorded as a cost | ‘cpa_flat‘ – Cost per Conversion (CPA) ‘cpa_percentage‘ – Cost per Sale (CPS) ‘cpa_both‘ – Cost per Conversion + Cost per Sale (CPA + CPS) ‘CPC – Cost per Click (CPC) ‘CPM‘ – Cost per Thousand Impressions (CPM) |
cpa_flat |
revenue_type | How advertisers will pay recorded as revenue | ‘cpa_flat‘ – Revenue per Conversion (RPA) ‘cpa_percentage‘ – Revenue per Sale (RPS) ‘cpa_both‘ – Revenue per Conversion + Revenue per Sale (RPA + RPS) ‘CPC‘ – Revenue per Click (RPC) ‘CPM‘ – Revenue per Thousand Impressions (RPM) |
cpa_flat |
default_payout | The flat-rate payout set for the offer | Monetary value with two decimal places. commas or decimals accepted | 5.00 |
percent_payout | The percentage payout to a partner for a sale | Whole percentage number (no ‘%’ symbols are passed) | 25 |
max_payout | The flat-rate revenue set for the offer | Monetary value with two decimal places. commas or decimals accepted | 7.00 |
max_percent_payout | The percentage of a sale collected as revenue | Whole percentage number (no ‘%’ symbols are passed) | 30 |
tiered_payout | Turns on tiered payouts for offer. Each tier’s payout + revenue must be set in-app | 1 (enabled) or 0 (disabled) | 0 |
is_private | Enables offer to be private | 1 (enabled) or 0 (disabled) | 0 |
redirect_offer_id | The ID of the offer to redirect to when paused/expired | Numeric ID of the offer | 44 |
converted_offer_id | The ID of the offer to redirect to if a user has already converted | Numeric ID of the offer | 44 |
converted_offer_url | Custom URL to redirect to when the user has already converted | Any URL (‘http://’ included) along with defined macros | http://othersite.com |
conversion_cap | Number of daily conversions allowed for an offer | The numeric whole number will enable this setting | 2000 |
session_hours | The number of hours the user clicks session/cookies will be tracked | A numeric whole number less than 17520. Default is 720 (30 days) | 720 |
require_approval | Requires approval for a partner to access offers | 1 (enabled) or 0 (disabled) | 0 |
terms_and_conditions | Adds terms & conditions to offer partners have to agree to | Up to 255 characters | Terms and conditions here |
approve_conversions | Turns on a setting that requires approval of all conversions for this offer | 1 (enabled) or 0 (disabled) | 0 |
allow_multiple_conversions | The setting allows multiple conversions from the same transaction ID | 1 (enabled) or 0 (disabled) | 0 |
allow_website_links | Setting that allows custom landing page URLs to be passed in tracking links | 1 (enabled) or 0 (disabled) | 0 |
show_custom_variables | Turns on a setting to allow custom variables to be passed to an advertiser | 1 (enabled) or 0 (disabled) | 0 |
set_session_on_impression | Start tracking users on impression instead of click | 1 (enabled) or 0 (disabled) | 0 |
display_advertiser | Option to show advertiser in partners interface | 1 (enabled) or 0 (disabled) | 0 |
country_codes | Two-letter country codes to be targeted in the offer | Two letter country code for each country targeted, separated by commas, wrapped in quotation marks ( "" ) | “US,CA,UK” |
enforce_geo_targeting | Enforces geotargeting for offer | 1 (enforced) or 0 (disabled) | 1 |
dne_list_id | The ID of the suppression list for this offer | Numeric ID of the suppression list | 2 |
email_instructions_from | Text specifying instructions for email campaigns | Up to 255 characters | Test email instructions here |
email_instructions_subject | Text listing approval subjects for email campaigns | Up to 255 characters | Test email subjects here |
is_seo_friendly_301 | Turns on SEO-friendly links for offer | 1 (enabled) or 0 (disabled) | 0 |
ref_id | Reference ID for offer | Up to 255 characters | test123 |
categories | IDs of categories that offer are associated with | Category ID integer values separated by commas, wrapped in quotation marks ( “” ) | “1,2,3” |
enforce_secure_tracking_link | Value for the “Secure Tracking Link” offer tracking setting | 1 (enabled) or 0 (disabled) | 1 |
tags | Tags applied to the offer | Existing tag names are separated by commas, wrapped in quotation marks ("") | “Red,Blue,Green” |
Applying Classifications
To apply offer classifications via CSV upload, use the classification type name in the header row and use the classification itself as the value. Accepted classification type names are:
- Channel
- Conversion Type
- Incentive
- Media Placement
- Operating System
- Vertical
For example, you can apply the “Non-incent” classification (of the “Incentive” classification type) to three offers with a CSV file that looks like this:
id | incentive |
---|---|
40 | non-incent |
58 | non-incent |
74 | non-incent |
Classifications applied via CSV upload are added to any existing classifications.
Note: Applying classifications via CSV upload follows the same restrictions as the TUNE platform. Keep in mind that offers only accept a single classification for certain classification types.
“What If I Need Other Fields?”
This feature is limited to core offer fields. If you need to change something relating to an offer—like advanced payout and revenue settings or other landing pages—you can do so directly in the platform or (for enterprise accounts) through the Network API.
Known Issues with CSVs
Using Complex Text Fields
If a text field contains commas: You need to do something special with that field. First, put quotation marks (“) around that field. For example, if you have three countries in a field that are separated by commas—US, Canada, and the United Kingdom—your field would look like this:
"US,CA,UK"
The commas between fields go on the outside of the quotes, such as:
…,10,5,"US,CA,UK",active,…
Important: If you put the delimiting commas inside the quotations marks (as some people might because of how they’re taught to write), the CSV import process will not work.
If a text field contains quotation marks: Use two backslashes (\) right before the quotation mark to tell TUNE to use an actual quotation mark, then use quotes around that text field. For example, a description that looks like this:
Winner of "Best Game" by Awesome Games Quarterly!
Would look like this in the CSV:
…,"Winner of \\"Best Game\\" by Awesome Games Quarterly!",…
If a text field contains line breaks: The import process does not support line breaks within text fields.
Using Date Fields in Spreadsheets
Most spreadsheet software (such as Microsoft Excel and Google Sheets) will format any dates entered in a way that makes them incompatible with our system. When using expiration_date and other date fields, you must set those columns to be strictly text-only.
- Microsoft Excel: The steps may vary depending on which version of Excel you use. For current versions, select the columns for the date fields, and go to the Cells option in the Format menu. In the Number tab, click on the Custom option in the Category list. Then in the Type box, enter “yyyy-mm-dd hh:mm:ss” (without quotation marks), then click OK. The dates will then appear as expected. when exported to CSV.
For older versions, select the columns for the date fields, right-click or command-click on the selected area, and click on Format Cells. In the pop-up that appears, click on the Number tab and select Text. - Google Sheets: Select the columns for the date fields, then go to the Format menu, select Number, and click on Plain Text.
- Apple’s Numbers: Numbers preserve the date formatting as you enter them. No special menu command is needed.
In all cases, you may have to re-enter any dates that were put in prior to changing the formatting in order to correct the entries and have your upload succeed. If you continue to have problems, open your .csv file in a plain text editor to make adjustments.