> 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/ads/create-ads/create-an-article-asset.md).

# Create an Article Asset

impact.com supports both static and dynamic HTML ads, including search widgets, embedded forms, and product banners. As an *Article Asset*, you can update your HTML ad anytime without third-party tools. To upload, include these two required items:

* A secure HTTPS landing page (an absolute URL, starting with `http://` or `https://`).
* Any dynamic URL tokens you want to track when users click the ad.

#### Create Article Asset

1. From the left navigation bar, select ![](/files/CDnwOBeIdds9r3Z6zTnO) **\[Engage]** → **Content** → [**Ads**](https://app.impact.com/secure/advertiser/engage/ads/manage-all-ads-flow.ihtml).
2. In the top-right corner, select **Create Ad** ![](/files/jA6jLZ1RleK5VI2zmvap) **\[Drop-down menu]**, then select **Article**.
3. Complete the information in the following sections:

<details>

<summary>Asset Details</summary>

1. Enter a **Name** for your asset.
2. Optionally, enter a **Description** providing details about the asset.
3. Under *Landing Page*, select ![](/files/jA6jLZ1RleK5VI2zmvap) **\[Drop-down menu]** **Custom** to configure a custom landing page for your asset. Leave the setting on **Default** to direct customers to your program landing page.
4. Optionally, ![](/files/OoA2qxPalfCYKZvmxuU6) **\[Toggle on] Mobile Fallback** to reroute mobile traffic from this asset if impact.com didn't detect that your app is already installed. Only the mobile operating systems you've configured in your [Mobile App settings](/brand/what-would-you-like-to-learn-about/platform-features/tracking/mobile-app-tracking/set-up-a-mobile-app.md) will appear here.
   * **Android** — from the ![](/files/jA6jLZ1RleK5VI2zmvap) **\[Drop-down menu]** under *Android*, select a fallback option. This selection will then be populated with the URL to download your app.
   * **iOS** — from the ![](/files/jA6jLZ1RleK5VI2zmvap) **\[Drop-down menu]** under *iOS*, select a fallback option. This selection will then be populated with the URL to download your app.
5. To add parameters to the landing page tracking link, select ![](/files/Gl8lj5gLPbgSXGH8yWYa) **\[Add Metadata]**. These parameters will be added to the end of the asset's tracking link.
   * Learn more about [tracking link parameters](/brand/what-would-you-like-to-learn-about/platform-features/tracking/tracking-explained/tracking-link-parameters-explained.md).
6. Optionally, enter **Labels** to make your asset more easily searchable.
   * Learn more about creating and managing [asset labels](/brand/what-would-you-like-to-learn-about/platform-features/ads/manage-ads/add-labels-to-assets.md).
7. ![](/files/OoA2qxPalfCYKZvmxuU6) **\[Toggle on] Restrict Partner Access** to set which partner groups can use this asset, and search for the **Partner Groups** you want to grant access to this asset.

</details>

<details>

<summary>Asset Configuration</summary>

1. In the *Content* field, enter the HTML/CSS/JS code for your ad, or use the rich text editor options to format your content more easily.
   * **Tip:** You can upload images directly inline with your content using the rich text editor.
2. If you're using dynamic tokens, select **Insert other dynamic fields** to view all available token inserts.
   * See the *Dynamic token* reference below to learn what type of content each token inserts.
3. Optionally, select an **Asset Size** by choosing a resolution from the ![](/files/jA6jLZ1RleK5VI2zmvap) **\[Drop-down menu]**.
   * The *Other* option allows you to configure a custom size.

</details>

<details>

<summary>Promotional Details</summary>

1. Optionally, select a pre-existing **Deal** or **Add New Deal** from the ![](/files/jA6jLZ1RleK5VI2zmvap) **\[Drop-down menus]**.
2. Optionally, set **Start** and **End Dates** for the asset, and set a **Timezone** from the ![](/files/jA6jLZ1RleK5VI2zmvap) **\[Drop-down menu]**.
3. Select the ![](/files/Vet2H95jIGuNiPPl9Gt9) **\[Calendar]** to apply the asset date, then set the ![](/files/jA6jLZ1RleK5VI2zmvap) **\[Drop-down menu]** to set the start and end times.

* Optionally, select ![](/files/pJsLBrBDVoHbzf2iiL1a) **\[Unchecked box]** **change landing page on expiration** and proceed by selecting **Configure Rule** to configure what happens if the landing page expires. Select the expiration rule you want to apply from the options below and then click **Submit**:

4. Optionally, specify if the asset is **Seasonal** and use the ![](/files/jA6jLZ1RleK5VI2zmvap) **\[Drop-down menu]** to select a relevant promotional period.
5. Under *Additional Promotional Options*, you can select whether your ![](/files/FrzJdYoKvOuHxpwWtvcp) **\[Checkbox] Offer is a top selling item** or ![](/files/FrzJdYoKvOuHxpwWtvcp) **\[Checkbox] Enable a media partner to request their own unique promo code for this promotion**.

</details>

<details>

<summary>Advanced Settings</summary>

1. From the ![](/files/jA6jLZ1RleK5VI2zmvap) **\[Drop-down menu]**, select in which **Language** you want to serve this asset.
2. To limit partners to using iFrame tracking codes (and prevent HTML tracking codes) for this asset, select ![](/files/FrzJdYoKvOuHxpwWtvcp) **\[Checkbox]** **Limit Partners to iFrame tracking code for this asset**.
3. To set up a 3rd-party pixel for the asset, ![](/files/OoA2qxPalfCYKZvmxuU6) **\[Toggle on] Third Party Impression Pixel**.
   * This allows you to send impression data to your external analytics systems.
   * See the *Dynamic token* reference to learn what type of content you can insert with each token.

</details>

4. Select the **Save** or **Save Draft** ![](/files/jA6jLZ1RleK5VI2zmvap) **\[Drop-down menu]** and choose from the following options:

{% tabs %}
{% tab title="Save" %}

* **Save** - Saves the asset and activates it.
* **Save & Create Another** - Saves the asset and opens a new form to create another.
* **Save & Create Another with Same Settings** - Saves the asset and starts a new one with the same settings pre-filled.
  {% endtab %}

{% tab title="Save Draft" %}

* **Save Draft** - Saves your progress without activating the asset.
* **Save & Create Another** - Saves the draft and opens a new draft form.
* **Save & Create Another with Same Settings** - Saves the draft and starts a new draft with the same settings pre-filled.
  {% endtab %}
  {% endtabs %}

**Dynamic content ad example**

In the *Example code* provided below, we have:

* An HTML form with a textbox entry and "Submit" button
* Embedded CSS to style the form independently of other content
* A `<div>` container for the widget
* JavaScript function that dynamically creates an impact.com tracking link and appends query string parameters
* A `<noscript>` tag for the system to accept the script when it doesn’t have an outgoing link (Without this tag, we’d encounter an error when trying to upload this creative.)

  In practice, many of these elements can be hosted or embedded on your website—impact.com supports external HTML, CSS, and JavaScript files for dynamic content.

```html
<style type="text/css">  
#search-widget-container 
{    font-family:"Verdana";
     padding:20px;     
     width:280px;    
     height:75px;
     margin:30px;
     background:#FFFFFF;
     border:1px solid #BBBDBF;
     border-radius:6px;
     box-shadow:5px 5px 2px rgba(0,0,0,0.1);   }   
     #submitbutton 
     {background:#fff;
     color:#3B91CF;
     font-weight:bold;
     font-size:12px;
     padding:5px:
     border-radius:6px;
     border:1px solid #3B91CF;
     cursor:pointer;   }   
    #submitbutton:hover {    
     background:#3B91CF;
     color:#fff;  }
     #searchbox {
      width:200px;
      margin:10px 10px 10px 0px;   }
</style>
<div id='search-widget-container'>
<img src="http://www.impactradius.com/wp-content/uploads/2014/05/impact-radius-logo.png" width="150px">  
<form><input name='searchTerm' 
   id='searchBox'
   type='text' 
   placeholder='Search The Website'>
    <input onClick="searchFunction()" 
     type='submit' 
     value='Submit'
     id='submitbutton'>
 </form>
</div>
<script type="text/javascript">
function searchFunction() {  
// Get the user-submitted value from the search box 
var searchTerm = document.getElementById("searchBox").value;  
var landingPage = "http://{domain}/c/{irpid}/{iradid}/{ircid}?p.searchTerm=";
// Append the searchTerm to the end of the landingPage
var completeURL = landingPage.concat(searchTerm);
// Send the customer to the complete final URL
window.location.href = completeURL;   } 
</script>
<noscript>
<a href=”http://www.example.com”>No script link</a>
</noscript>
```

* The JavaScript code generates a tracking URL using dynamic tokens and appends the search terms as query string parameters.
* Since the content doesn’t have an absolute URL, we use `{domain}`, `{irpid}`, `{iradid}`, and `{ircid}` as dynamic tokens to generate a tracking link, which populates with the program’s tracking domain, partner ID, ad ID, and program ID values.
* Once clicked, the customer will be routed through impact.com and then forwarded to the landing page—in this case, `https://www.example.com`

<details>

<summary>Dynamic token reference</summary>

| Token                   | Supported in                     | Description                                                                      |
| ----------------------- | -------------------------------- | -------------------------------------------------------------------------------- |
| `{irpid}`               | Asset content / impression pixel | Populates with the partner's impact.com partner ID.                              |
| `{iradid}`              | Asset content / impression pixel | Populates with the ad ID assigned to the ad.                                     |
| `{ircid}`               | Asset content / impression pixel | Populates with the impact.com program (or campaign) ID assigned to your program. |
| `{subId1}` - `{subId3}` | Asset content                    | Populates with the partner's SubId's value (used for tracking and reporting).    |
| `{sharedId}`            | Asset content                    | Populates with the partner's SharedId value for reporting.                       |
| `{domain}`              | Asset content / impression pixel | Populates with the tracking domain for your program.                             |
| `{timestamp}`           | Asset content                    | Populates with a timestamp (in Unix epoch format) when the ad is retrieved.      |
| `{randint}`             | Asset content / impression pixel | Populates with a randomly generated integer when the ad is retrieved.            |

</details>

#### Troubleshoot validation errors

You may see the following error messages when creating your content ad. Here's what you can do to solve them:

| Validation error                  | Explanation                                                                                                                                                                                         |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *“No replaceable links present”*  | impact.com cannot detect replaceable links in the *Content* field. Links must include protocol. Any links using `http` will be automatically converted to `https`.                                  |
| *“Ad name cannot be empty”*       | You must provide a name for your content ad in the *Name* field.                                                                                                                                    |
| *"URL on anchor is not absolute"* | There's at least 1 link in *Content* that isn't absolute. Absolute links use the full path starting with `http:// or https://`. Check for syntax issues, such as as spaces before or after `href=`. |


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.impact.com/brand/what-would-you-like-to-learn-about/platform-features/ads/create-ads/create-an-article-asset.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
