Creating and Updating Offers via CSV
Use CSV to create, update, and classify offers at scale.
Contents
- Overview
- Prepare Your CSV
- Bulk Create New Offers
- Bulk Update Existing Offers
- Monitoring & Error Handling
- List of Offer Fields (Reference)
- Apply Offer Classifications via CSV
- FAQ & Tips
Overview
The Import Offers feature enables you to migrate or manage multiple offers simultaneously using a CSV file. Use it to create new offers or update existing ones—including statuses, basic settings, and classifications.
Prepare Your CSV
Required Fields
Creating new offers: include at least:
name, description, offer_url, preview_url, expiration_date, status
Updating existing offers: include:
id, plus any fields you wish to update (e.g., status)
id when uploading updates, TUNE treats the rows as new offers.Date Formatting
Dates must be in UTC and use the format YYYY-MM-DD HH:MM:SS (e.g., 2025-01-31 23:59:59).
| Application | Formatting Instructions |
|---|---|
| Excel | Format date columns as Text before saving CSV (or use custom yyyy-mm-dd hh:mm) |
| Google Sheets | Format date columns as Plain Text |
| Apple Numbers | Default export preserves date formatting |
Handling Complex Text
-
Commas in fields: wrap the value in quotes, e.g.,
"US,CA,UK" -
Quotation marks in text: escape each quote with two backslashes:
"Winner of \\"Best Game\\"" - No line breaks: remove line breaks within any single field
Example CSV Format:
name,description,offer_url,preview_url,expiration_date,status "Spring Promo","This is an offer description","http://example.com?trans={transaction_id}","http://example.com","2025-01-31 23:59:59","active"
Bulk Create New Offers
Step-by-Step Process
- Ensure your CSV includes all required fields for new offers
-
Go to
Company → Customize Application - Scroll to Import Data and select Offers
- Attach your CSV and click Upload
- Processing may take up to 30 minutes depending on file size
Bulk Update Existing Offers
To update existing offers (e.g., change status), include id plus any fields to update.
Example Update CSV:
id,status 40,active 58,active 74,active 80,active 82,active 96,active
Update Process
-
Open
Company → Customize Application → Import Data → Offers - Upload your CSV and start the import
Monitoring & Error Handling
- Watch the processing status after upload
- When complete, look for the Import Complete notice on your Snapshot page
- If any rows fail, review the error message, fix the CSV, and re-upload
- If issues persist, contact support and include the CSV and error details
List of Offer Fields (Reference)
| 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 * | Default landing page URL | Any URL with http:// and macros | http://example.com?trans={transaction_id} |
| preview_url * | Preview landing page URL | Any URL with http:// | http://example.com |
| expiration_date * | Offer expiry (UTC) | YYYY-MM-DD HH:MM:SS | 2025-01-31 23:59:59 |
| status * | Offer status | active, pending, paused, deleted | active |
| id ** | Offer ID (for updates) | Numeric ID | 42 |
| advertiser_id | Advertiser account ID | Numeric ID | 20 |
| protocol | Conversion tracking protocol | http, https, http_img, https_img, server, server_affiliate | http |
| currency | Currency code | 3-letter ISO (USD, EUR, etc.) | USD |
| payout_type | Partner compensation | cpa_flat, cpa_percentage, cpa_both, CPC, CPM | cpa_flat |
| revenue_type | Advertiser revenue | cpa_flat, cpa_percentage, cpa_both, CPC, CPM | cpa_flat |
| default_payout | Flat payout | Monetary value | 5.00 |
| percent_payout | Percentage payout | Whole number | 25 |
| max_payout | Flat revenue cap | Monetary value | 7.00 |
| max_percent_payout | Revenue % cap | Whole number | 30 |
| tiered_payout | Enable tiered payouts | 1 (enabled) or 0 (disabled) | 0 |
| is_private | Private offer | 1 or 0 | 0 |
| redirect_offer_id | Redirect when paused/expired | Numeric ID | 44 |
| converted_offer_id | Redirect if user already converted | Numeric ID | 44 |
| converted_offer_url | Custom redirect URL | URL | http://othersite.com |
| conversion_cap | Daily conversions allowed | Whole number | 2000 |
| session_hours | Tracking hours | Whole number < 17520 | 720 |
| require_approval | Requires approval | 1 or 0 | 0 |
| terms_and_conditions | Offer terms | Up to 255 characters | Terms and conditions here |
| approve_conversions | Requires conversion approval | 1 or 0 | 0 |
| allow_multiple_conversions | Multiple conversions allowed | 1 or 0 | 0 |
| allow_website_links | Custom landing page URLs allowed | 1 or 0 | 0 |
| show_custom_variables | Allow custom variables | 1 or 0 | 0 |
| set_session_on_impression | Track on impression | 1 or 0 | 0 |
| display_advertiser | Show advertiser in interface | 1 or 0 | 0 |
| country_codes | Targeted countries | Two-letter codes in quotes | "US,CA,UK" |
| enforce_geo_targeting | Enforce geotargeting | 1 or 0 | 1 |
| dne_list_id | Suppression list ID | Numeric ID | 2 |
| email_instructions_from | Email instructions | Up to 255 characters | Test email instructions |
| email_instructions_subject | Email approval subjects | Up to 255 characters | Test email subjects |
| ref_id | Reference ID | Up to 255 characters | test123 |
| categories | Category IDs | IDs in quotes | "1,2,3" |
| enforce_secure_tracking_link | Secure tracking link | 1 or 0 | 1 |
| tags | Tags applied | Comma-separated in quotes | "Red,Blue,Green" |
| allow_test_clicks | Allow test clicks | 1 or 0 | 0 |
Apply Offer Classifications via CSV
You can apply classifications (e.g., Channel, Vertical) in bulk with a simple CSV. Uploads add to any existing classifications. Some types accept only a single value.
Supported Classification Types
- Channel
- Conversion Type
- Incentive
- Media Placement
- Operating System
- Vertical
CSV Format & Upload
Create a CSV with the header set to the classification type name (e.g., incentive) and list each offer's id with its classification value.
Example Classification CSV:
id,incentive 40,non-incent 58,non-incent 74,non-incent
Upload Process
-
Go to
Company → Customize Application → Import Data → Offers - Upload the CSV and monitor the processing status
FAQ & Tips
-
Why did my updates create new offers?Updates require a
idcolumn. If it's missing, rows are treated as new offers.
-
How long do imports take?Up to ~30 minutes depending on file size and system load. You'll see an Import Complete notice on the Snapshot page when finished.
-
What's the safest way to update many offers?Export offers to CSV, modify in a copy, and re-upload. Keep a backup of the original export.
-
What if I get errors?Read the row-level error message, correct the CSV (e.g., formats, required columns, valid values), and upload again. If issues persist, contact support with the CSV and the error details.