> For the complete documentation index, see [llms.txt](https://help.impact.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.impact.com/brand/what-would-you-like-to-learn-about/platform-features/promo-codes/bulk-upload-promo-codes.md).

# Bulk Upload Promo Codes

If you want to create multiple promo codes, use the **Bulk Upload** feature to upload a CSV, XLS, or, XLSX file with your promo code data.

Refer to the *Promo code bulk upload reference table* in step 3 below for help in structuring this file. To ensure the upload is successful, keep the file size under 1MB for XLS/XLSX or 5MB for CSV. Validation is based strictly on file size, so there is no specific limit on the number of rows.

{% hint style="warning" %}
**Warning:** Make sure the column headers in your CSV/XLS file exactly match the column names below (case-sensitive and spaces), otherwise your file upload could be rejected.
{% endhint %}

{% hint style="info" %}
**Example:** The example below is for an example promo code `10PEROFF`.

```programlisting
Promo Code,Campaign Id,Media Id,Type,Credit Rule,Match Mode,Deal
Name10PEROFF,4321,1299679,TRACKING,ALWAYS,LI,
```

{% endhint %}

#### Bulk upload tracking promo codes

1. From the left navigation menu, select ![](https://4048883401-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwMLlMoFBtKJa8ptd3zaw%2Fuploads%2Fgit-blob-230534471fef5f40808e921e41ee44e4a06ded03%2Fe6cb9548999afdc1ed3ce4942e4cb5b45b5cecbd323267aac2a7cd1915fccc09.svg?alt=media) **\[Engage]** → **Content** → [**Promo Codes**](https://app.impact.com/secure/advertiser/engage/ads/view-adv-promo-codes-flow.ihtml).
2. On the *Promo Codes* screen, select **Bulk Upload**.
3. Select **Choose File** and then locate and select the Excel or CSV file with the promo codes that you want to upload.

{% hint style="success" %}
**Note:** Ensure your file uses the required column format shown in the table below.
{% endhint %}

4. Select **Next**.
5. Review the list of promo codes that will be uploaded. If the details are correct, select **Accept & Create Promo Codes**.
6. If the upload is successful, the new *Tracking promo codes* are created and listed on the *Promo Codes* screen.

| Column            | Type    | Required | Description                                                                                                                                                                                                                                                                                                                                                  |
| ----------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Promo Code        | String  | Yes      | The unique promo code to be assigned.                                                                                                                                                                                                                                                                                                                        |
| Program Id        | Integer | Yes      | The unique impact.com Program Id to which the ad belongs.                                                                                                                                                                                                                                                                                                    |
| Media Id          | Integer | Yes      | <p>The impact.com Media Id to which the promo code will be assigned. This can be Partner Id or Media Source Id.</p><p>Each uploaded tracking promo code can only be assigned to 1 partner or media source through this field. If another partner promotes that code, impact.com flags the resulting conversion as an invalid conversion and reverses it.</p> |
| Type              | String  | Yes      | <p>The promo code type. Allowed values:</p><p><code>TRACKING</code></p>                                                                                                                                                                                                                                                                                      |
| Credit Rule       | String  | Yes      | <p>The promo code credit rule. Allowed values:</p><p><code>ALWAYS</code></p><p><code>INVOLVED</code></p><p><code>WINNER</code></p>                                                                                                                                                                                                                           |
| Match Mode        | String  | Yes      | <p>The promo code match mode. Allowed values:</p><p><code>LI</code> (Exact/Literal)</p><p><code>RE</code> (Regex/Regular Expression)</p>                                                                                                                                                                                                                     |
| Deal Id           | Integer | No       | The unique ID of the deal this promo code should be associated with. The deal must already exist in your program.                                                                                                                                                                                                                                            |
| Active Start Date | Date    | No       | Gives you the ability to schedule this restriction. This is an [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) Date. Example format: `2013-06-30T00:00:00-07:00`                                                                                                                                                                                           |
| Active End Date   | Date    | No       | This is an ISO8601 Date. Example format: `2013-06-30T00:00:00-07:00`                                                                                                                                                                                                                                                                                         |
| Timezone          | String  | No       | Timezone is derived from the start date, but if you want to override it with a specific timezone, enter the full name here, e.g., `America/New_York`.                                                                                                                                                                                                        |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.impact.com/brand/what-would-you-like-to-learn-about/platform-features/promo-codes/bulk-upload-promo-codes.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
