PepperJam Network provides access to product feeds to all affiliates for free via their networks web-interface. This is convenient and works in most cases.
There is probably the option for FTP access available as well. PepperJam does not state anything about it on their website, but I am sure that the option exists, if you contact PPJN support directly.
Access to product feeds via HTTP is simple and cheap and works well, as long the size of the feeds is not too big to cause problems on the side of the web server rather than the users.
I provided my affiliates, when I was still an affiliate manager myself, with access to the merchants product data via HTTP. That was back in 2003 already. One important feature that should be considered is the ability for the affiliate to pull the feed by automated means, without the need to login manually somewhere, e.g. the networks web-interface.
Unfortunately does this not work with PepperJam Network. It is requried to be logged in to the networks website that the access to the product feed data via the provided URL will work.
I tried adding the URL parameters "&email=MYEMAIL" and "&passwd=MYPASSWORD" (name of the fields on the websites login-form) to the provided URL, but that did not work. To secure the transfer, I could change the URL to use SSL for the connection, by changing the "http://..." to "https://...". Using SSL would make sense, since I would use my real user name and password in plain readable text in the URL, something you probably want to secure a little bit :).
Passing the login credentials along with the request for the product feed is only one possible option to make it work for everybody. I actually used in 2003 the same "trick" as Google and other services use today to provide you with a URL to a "private" feed (e.g. private calendar feed). The URL simply contains one parameter with a long and cryptic value, which contains in crypted format everything Google needs to identify you and to obscure the URL in a way that makes it virtually impossible to guess by any other person. The user has the ability to generate a new URL for a feed, if the existing one was made public somehow.
I wrote a script in VB to automatically pull product data feeds from pepperjam. It provides several command line options to adjust it to your needs. You can download the Source Code here (right-click and select "save as", change extension of file from ".txt" to ".vbs"). Requirement: Microsoft Windows XP Service Pack 2 or Windows 2003 Server Service Pack 1, specifically the WinHTTP component with version 5.1. PepperJam Affiliate Network - Automatic Product Data Feed Download Script, Version 0.9b written by Carsten Cumbrowski (2009), http://www.cumbrowski.com/ usage: pullfeeds.vbs /u:EMAIL /p:PW /a:AFFID /out:OUTFILE.CSV [/progs:PRGIDS /cats:CATIDS /kw:KWDS /outdir:DRIVE:\PATH /over:N /:timeout:NNN] Required Command Line Parameters ------------------------------------------------------------------------------------------ /u:USERNAME - Your PPJN Username/Email /p:PASSWORD - Your PPJN Account Password (Number) /a:AFFILIATEID - Your Numeric Affiliate ID /out:FILENAME - Output File Name (only file name, not Path) Optional Parameters ------------------------------------------------------------------------------------------ /progs:PROGRAMIDs - Program IDs, separate multiple programs with '-', default = all programs /cats:CATEGORYIDs - Category IDs, separate multiple categories with '-' /kw:KEYWORDS - Keywords, separate multiple keywords with '+' /outdir:DIRPATH - Output Directory (Default = current directory) /over:N - Do Not Overwrite Existing Output File (Default = overwrite) /timeout:NNN - Timeout in seconds for Download Request (default = 300 (5 min)) Examples ------------------------------------------------------------------------------------------ Example 1 (using defaults): Download all products enabled for your account to a file called feed.csv to the same location where the script is located on the hard disk. pullfeeds.vbs /u:john.d@hotmail.com /p:mypw /a:987 /out:feed.csv Example 2 (special output directory): Same as Example 1, but saving the results in a different directory, e.g. c:\feeds pullfeeds.vbs /u:john.d@hotmail.com /p:mypw /a:987 /out:feed.csv /outdir:c:\feeds Example 3 (filter by programs): Same as Example 1, but only download products for two specific advertisers with if 10 and 59 pullfeeds.vbs /u:john.d@hotmail.com /p:mypw /a:987 /out:feed.csv /progs:10-59 |
The format of the download URL for the product data feed in delimited format
Note: the line-break was added for space reasons
http://feeds.pepperjamnetwork.com/product-catalog/download/?affiliate_id=AFFILIATEID &program_ids=PROGRAMIDS&categories=CATEGORYIDS&keywords=KWS
The URL contains "place holders" that must be replaced with the appropriate value, depending on your specific account and settings.
Placeholder | Description |
AFFILIATEID | your affiliate ID in the PepperJam Network |
PROGRAMIDS | PPJN Merchant IDs separted by a dash "-" or "all" for all merchants where you have an active relationship with, e.g. ...&program_ids=65-67-177-370-558-620-2088 or ...&program_ids=all |
CATEGORYIDS | PPJN Product Category IDs. See list of IDs and their use below. your affiliate ID in the PepperJam Network. Like for the program_ids parameter, separate multiple categories with a dash "-". To select all categories, leave the parameter empty instead of using "all". |
KWS | Keywords to filter product results separated by "%20" (=space, but URL encoded). Note: the URL provided via the PPJN interface includes a space instead of the "%20", which produces a mal-formatted URL and can cause problems with some browsers. |
7 Accessories 9 Art/Photo/Music 11 Automotive 13 Books/Media 15 Business 17 Careers 19 Clothing/Apparel 1 Commerce 2 Computer & Electronics 3 Education |
23 Entertainment 24 Family 25 Financial Services 27 Food & Drinks 29 Games & Toys 31 Gifts & Flowers 33 Health & Beauty 35 Home & Garden 37 Insurance 39 Legal |
41 Marketing 43 Medical 45 Phonecard Services 47 Recreation & Leisure 49 Shops/Malls 51 Sports & Fitness 53 Travel 55 Web Services |
Column Delimiter: Comma (,)
Row Delimiter: Line Feed (Char(10))
The first row contains the title for each column. Column titles are always lower case, without special characters and using an underscore "_" instead of a space " " to separate words.
Note: String values are only enclosed in double-quotes ("), if the value contains one or more occurrences of the column delimiter character (comma, ",").
The delimted product data feed of the PepperJam Affiliate Network contains 80 different columns. Most of the columns are obligatory and it depends on the advertiser, if the information is provided or not.
The column names are pretty descriptive. I added notes where I deemed it necessary or helpful.
# | Name | Type(Length) | Notes |
1 | program_id | Integer | Required Field, The unique ID of the advertiser within the PPJN |
2 | program_name | String(255) | Required Field, the Name of the advertisers program within the PPJN |
3 | age_range | String(255) | |
4 | artist | String(255) | |
5 | aspect_ratio | String(255) | |
6 | author | String(255) | |
7 | battery_life | String(255) | |
8 | binding | String(255) | |
9 | buy_url | String(255) | Required Field, URL to product with affiliate tracking code already included |
10 | color | String(255) | |
11 | color_output | String(3) | "yes" or "no" |
12 | condition | String(255) | |
13 | description_long | String(512) | |
14 | director | String(255) | |
15 | display_type | String(255) | ??? |
16 | edition | String(255) | |
17 | expiration_date | Date | Format:YYYY-MM-DD ("0000-00-00" if n/a) |
18 | features | String(255) | |
19 | focus_type | String(255) | |
20 | format | String(255) | |
21 | functions | String(255) | |
22 | genre | String(255) | |
23 | heel_height | String(255) | |
24 | height | String(255) | |
25 | image_thumb_url | String(255) | |
26 | image_url | String(255) | |
27 | installation | String(255) | |
28 | isbn | String(255) | |
29 | length | String(255) | |
30 | load_type | String(255) | |
31 | location | String(255) | |
32 | made_in | String(255) | |
33 | manufacturer | String(255) | AG |
34 | material | String(255) | |
35 | megapixels | Integer | 0 if n/a |
36 | memory_type | String | |
37 | memory_capacity | String | |
38 | memory_card_slot | String | |
39 | model_number | String | |
40 | mpn | String | |
41 | name | String | Required Field, Name of the product |
42 | occasion | String | |
43 | operating_system | String | |
44 | optical_drive | String | |
45 | price_retail | Double/Float | default: 0 |
46 | pages | Integer | default: 0 |
47 | payment_accepted | String | |
48 | payment_notes | String | |
49 | platform | String | |
50 | price_sale | Double/Float | default: 0 |
51 | processor | String | |
52 | publisher | String | |
53 | quantity_in_stock | Integer | default: 0 |
54 | rating | String | |
55 | recommended_usage | String | |
56 | resolution | String | |
57 | shoe_size | String | |
58 | screen_size | String | |
59 | shipping_method | String | |
60 | price_shipping | Double/Float | Format: 999.99/99/0 |
61 | shoe_width | String | |
62 | size | String | |
63 | sku | String | |
64 | staring | String | |
65 | style | String | |
66 | tracks | Integer | 0 if n/a |
67 | upc | String | |
68 | weight | String | |
69 | width | String | |
70 | wireless_interface | String | |
71 | year | Integer | 0 if n/a |
72 | zoom | String | |
73 | category_network | String | empty |
74 | category_program | String | usually > for hierarchy |
75 | description_short | String | |
76 | discontinued | String(3) | yes or "no" String values; not Boolean |
77 | in_stock | String(3) | yes or "no" String values; not Boolean |
78 | tech_spec_url | String | |
79 | keywords | String | |
80 | price | Double/Float | 999.99/99/0 |
The product feed can be imported into spread-sheet applications like Microsoft Excel without any problems. Below are some screen shots that show a sample PepperJam Network Product Data Feed with real data loaded into MS Excel 2007.
Screen Shots of a sample product feed from PepperJam Network loaded into Microsoft Excel
The interface of the coupon feed selection and configuration tool at PepperJam Network
As you can see in the above screen-shot, accessing the coupon feed from PepperJam Network is simple and easy.
Unlike for the product data feed are the keyword search and category selection only for the filtering of your advertising partners and only of help, if you signed up for many of the programs available through the network. They do not impact the coupon feed results.
You can choose to get all promotions and coupons for all of your advertisers or filter by specific advertisers, filtering by type of offer or keyword is not possible.
The coupon feeds can be accessed via the provided URL without the need to be logged-in to the web-interface of the PepperJam Network, which makes it easier for automated access to their content.
There are two possible options for the format of the coupon data feed.
For details about the feed in RSS format, see the next chapter below.
The generated URL to pull the coupon feed in delimited format looks like this.
http://feeds.pepperjamnetwork.com/coupon/download/?affiliate_id=AFFILIATEID&program_ids=PROGRAMIDS
The URL contains "place holders" that must be replaced with the appropriate value, depending on your specific account and settings.
Placeholder | Description |
AFFILIATEID | your affiliate ID in the PepperJam Network |
PROGRAMIDS | PPJN Merchant IDs separted by a dash "-" or "all" for all merchants where you have an active relationship with, e.g. ...&program_ids=65-67-177-370-558-620-2088 or ...&program_ids=all |
Column Delimiter: Comma (,)
Row Delimiter: Line Feed (Char(10))
The first row contains the title for each column. Column titles are always lower case, without special characters and using an underscore "_" instead of a space " " to separate words.
Note: String values are only enclosed in double-quotes ("), if the value contains one or more occurrences of the column delimiter character (comma, ",").
The delimited values coupon feed has 8 columns, which are pretty descriptive. I added notes where I deemed it necessary or helpful.
# | Name | Type | Notes |
1 | program_id | Integer | |
2 | program_name | String | |
3 | name | String | |
4 | coupon_code | String | |
5 | description | String | |
6 | url | String | |
7 | begin | Date | Format: MM/DD/YYYY |
8 | expire | Date | Format: MM/DD/YYYY |
Screenshot of a sample coupon feed from PepperJam Network loaded into Microsoft Excel
The RSS feed uses a custom tag "coupon_code", which contains the promotion code or coupon code, where it is available, but no tag for the begin or expiration date/time of the promotion. This information is only included in text format within the "description" tag and hard to impossible to parse automatically, which makes the RSS version only feasible for real-time useage and not for the import into a custom database application.
You can find an example for the use of the coupon RSS feed further down below, including the source code of it for free download.
In contradiction to the product data feed, but like the delimited coupon feed, it is possible to pull the coupons RSS feed without the need to be logged into the PepperJam Network. This is good, because my example for using the feed would not work otherwise.
The URL to pull the coupon RSS feed is virtually identical to the URL for the delimited version of the feed, only the "/download/" part is replaced by "/rss20/" and looks like this.
http://feeds.pepperjamnetwork.com/coupon/rss20/?affiliate_id=AFFILIATEID&program_ids=PROGRAMIDS
The URL contains "place holders" that must be replaced with the appropriate value, depending on your specific account and settings.
Placeholder | Description |
AFFILIATEID | your affiliate ID in the PepperJam Network |
PROGRAMIDS | PPJN Merchant IDs separted by a dash "-" or "all" for all merchants where you have an active relationship with, e.g. ...&program_ids=65-67-177-370-558-620-2088 or ...&program_ids=all |
<?xml version="1.0" encoding="ISO-8859-1" ?> <rss version="2.0"> <channel> <title></title> <link></link> <description></description> <language></language> <image> <title></title> <url></url> <link/> <width></width> <height></height> </image> <item> <title></title> <coupon_code></coupon_code> <link></link> <description> #cdata-section (description in HTML and contains also the Start/End Date of the promotion , if applicable) </description> </item> <item> ... </item> </content> </rss>
XSD Schema for the Feed Validation looks like this
<ppjn_couponfeed.xsd> <xs:schema xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="rss"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="channel"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="title" type="xs:string" /> <xs:element minOccurs="0" name="link" type="xs:string" /> <xs:element minOccurs="0" name="description" type="xs:string" /> <xs:element minOccurs="0" name="language" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="unbounded" name="image"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="title" type="xs:string" /> <xs:element minOccurs="0" name="url" type="xs:string" /> <xs:element minOccurs="0" name="link" type="xs:string" /> <xs:element minOccurs="0" name="width" type="xs:string" /> <xs:element minOccurs="0" name="height" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element minOccurs="0" maxOccurs="unbounded" name="item"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="title" type="xs:string" /> <xs:element minOccurs="0" name="coupon_code" type="xs:string" /> <xs:element minOccurs="0" name="link" type="xs:string" /> <xs:element minOccurs="0" name="description" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="version" type="xs:string" /> </xs:complexType> </xs:element> <xs:element msdata:IsDataSet="true" msdata:UseCurrentLocale="true" name="NewDataSet"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="rss" /> </xs:choice> </xs:complexType> </xs:element> </xs:schema>
The XSD template for the PepperJam Coupon RSS Feed can be downloaded here (right-click and select "save as", change extension of file from ".txt" to ".xsd").
Here is a simple "widget" application to demonstrate a possible use of the coupon RSS feed provided by Pepperjam. Click on the button below to load the current promotions for merchants where I have an active relationship with at the moment. This sample is actually pulling real data, directly from PepperJam in real-time.
The Source Code for my little Coupons RSS Feed widget can be downloaded here (right-click and select "save as", change extension of file from ".txt" to ".html").
You also require the XSL Template for the transformation and formating. You can download it here (right-click and select "save as", change extension of file from ".txt" to ".xsl").
Instead of pulling a data feed and downloading it to your computer or server, you also have the option to show the results based on your selected filter criteria such as advertiser(s), product category(s) and/or keyword(s) in real-time on your website, using simple JavaScript code. The code is being provided by PepperJam Network and all you need to do is to copy and paste it from the network web-interface into your web site code or even a blog post or something like that.
There are a number of customizing options to make the generated product showcase blend into your existing site design and color schema.
With a bit understanding of the provided source code, it is possible to adjust the layout by hand without the need of using the PepperJam Network web-interface.
The generated code looks like this
<script id="searchDataHolder"> //This requires the appropriate affiliate ID var pjn_sb_affid = "354"; //This will control the amount of search results displayed on each page var pjn_sb_results_per_page = "2"; //Use this to filter specific categories for your site - //Must be dash separated, ie. var pjn_sb_categories = "123-456-789"; var pjn_sb_categories = ""; //Use this to filter results for a specific program ID- //Must be dash separated, ie. var pjn_sb_program_ids = "123-456-789"; var pjn_sb_program_ids = ""; //This is the default search terms area. Place more specific filters here. //These are SPACE separated. var pjn_sb_default_search = ""; //Customization Options - Each of these values will default //to the orginal theme, if left blank. var pjn_sb_border_color_main = "#a19d78"; var pjn_sb_border_color_product = "#a19d78"; var pjn_sb_border_color_search = "#a19d78"; var pjn_sb_main_background_color = "#bdbaa0"; var pjn_sb_search_background_color = "#FFFFFF"; var pjn_sb_results_text_color = "#666666"; var pjn_sb_page_links_color = "#FFFFFF"; var pjn_sb_product_background_color = "#FFFFFF"; var pjn_sb_product_title_color = "#7878a1"; var pjn_sb_product_text_color = "#000000"; var pjn_sb_product_price_color = "#000000"; var pjn_sb_product_buy_color = "#009900"; //This will toggle the visibility of the search box - //Defaults to false, if left blank. var pjn_sb_search_box_toggle = "true"; </script> <script src="http://widgets.pepperjamnetwork.com/js/pjn_storeloader.js" type="text/javascript"></script>
The checkbox "Blog optimized" does nothing else than stripping the code off unnecessary formating and comments to make it smaller and to reduce the possibility of issues with your blogging/content management platform. The same code from above, but with "blog optimized" option enabled looks like this:
<script id="searchDataHolder">var pjn_sb_affid = "354";var pjn_sb_results_per_page = "2"; var pjn_sb_categories = "";var pjn_sb_program_ids = "";var pjn_sb_default_search = "business"; var pjn_sb_border_color_main = "#a19d78";var pjn_sb_border_color_product = "#a19d78"; var pjn_sb_border_color_search = "#a19d78";var pjn_sb_main_background_color = "#bdbaa0"; var pjn_sb_search_background_color = "#FFFFFF";var pjn_sb_results_text_color = "#666666"; var pjn_sb_page_links_color = "#FFFFFF";var pjn_sb_product_background_color = "#FFFFFF"; var pjn_sb_product_title_color = "#7878a1";var pjn_sb_product_text_color = "#000000"; var pjn_sb_product_price_color = "#000000";var pjn_sb_product_buy_color = "#009900"; var pjn_sb_search_box_toggle = "true";</script> <script src="http://widgets.pepperjamnetwork.com/js/pjn_storeloader.js" type="text/javascript"> </script>
See below how the result looks like for the source code example that I used in this article.
See the Advertiser Kit to learn more about sponsorship opportunities at Cumbrowski.com. Press? Download my Media Kit.