Affiliate Marketing Automated

Last Updated: March 24, 2021.
Current Version: 1.0.10

ClickMeter is a powerful affiliate management system but lacks some functionality needed as a super affiliate. See my review of ClickMeter for more details. Affiliate marketing doesn’t need to be complicated and highly technical.

Track conversions so you know what traffic sources are better. Especially if you spend money on advertising you will know exactly how much is attributed to your online marketing.

Get all of the features missing from ClickMeter with this add-on.

Features

  • Automatic Conversion Tracking — All you need to do is cut-n-paste a link from an affiliate system in ClickMeter. The correct ‘subid’ and conversion entry are created automatically for you.
  • Auto-Generated Postback — For supported affiliate systems, get an auto-generated postback URL. No need to lookup up how to set up a postback link. Just cut-n-paste the URL given to you and you’ll be tracking conversions!
  • API Integration (14 systems supported) — While ClickMeter supports postbacks, API calls are the preferred method to track conversions since they are more reliable. The API integration allows you to capture more order information and record the true conversion date than the time of posting.
  • Upload Conversions — Track conversions for merchants with limited conversion tracking. For networks that do not support a postback or API, you can upload a comma-delimited report of your conversions.
  • Over 3,000 Merchants and Affiliate Networks Supported — Track conversions from most affiliate systems.
  • Free Support for New Affiliate Systems — Don’t see an affiliate system supported? If their system supports postback or reporting that includes a ‘subid’, I’ll support it for free!
  • Link Checking — No longer do you need to worry about invalid links. Get a daily report of bad links in ClickMeter.
  • Track Conversion Sources — Get UTM information and track conversions from a tag you can add to any affiliate link.
  • Redirection Page — Missing from ClickMeter is a redirection page to notify visitors they are leaving your website.
  • Track Ad ROI — Send your affiliate conversions to Google Ads, Microsoft Ads (Bing), and Facebook. Know if your ads are ROI positive and create a feedback loop so the ad networks know which audiences are converting.
  • CPC Tracking — Measure ClickMeter campaigns that are CPC and get an accurate measurement of the revenue generated from CPC links.
  • Send Conversion Info to Woopra or SegMetrics — An optional add-on that allows deep data insight into conversions that supports using Woopra or SegMetrics analytic tools.
  • Woopra Web Form Tagging — At the time of webform submission, the name and email of the individual should be tagged. This redirection script ensures each visitor is correctly identified. Supports most of the popular web form submissions systems.
  • Multi-Device Tagging of Email Clicks — (Requires Woopra). This merges multiple devices into one session when a visitor clicks on a link. Get a full picture of a visitor when they use multiple devices and on your mailing list. Works with ActiveCampaign, ConvertKit, and Drip. Can be used for any page view and for affiliate links.
  • ThriveCart -> Woopra Integration — Track ThriveCart orders in Woopra and merge into your visitor’s profile. Supports every aspect of billing in ThriveCart which includes: orders, rebilling, cancelations.

For more information and pricing, please contact me.

Software Requirements

  • ClickMeter
  • Linux
  • PHP 7 or higher
  • cronjob access
  • Shell access
  • Woopra or SegMetrics (optional)

Documentation

Conversion Checking

You no longer have to add ‘subid’ and conversion entries in ClickMeter. My additional functionality will do this for you automatically. It will check all links within your ClickMeter account for new or changed links.

Typically it checks every 15 minutes and adjusts the links in ClickMeter for you. If it has, it will add the tag ‘automanaged‘ and the affiliate system tag to your entry.

In most cases, it will recognize an affiliate system and add the ‘subid’ and conversion entry for you. Though in some situations, you may need to manually add a tag so it will manage the link for you. Listed below are affiliate systems and tags currently supported.

Conversion Tracking

Affiliate SystemAuto Detect?TagIntegration
Affiliate WPnoaffiliatewpCSV
AwinyesawinAPI
BankrateyesbankrateAPI
BluehostyesbluehostAPI
Cakenocake/cakes2API
Commission JunctionyescjAPI
ClickFunnelsnoclickfunnelsCSV
EverflownoeverflowAPI
FirstPromoternofirstpromoterCSV
FlexOffersyesflexoffersAPI
Generic (Any Merchant)nocsvCSV
iDevAffiliateyesidevaffiliateCSV
ImpactnoimpactAPI
JVZooyesjvzooTBD
KartranokartraCSV
LinkMinkyeslinkminkCSV
LinkTrustnolinktrustAPI
MaxBountyyesmaxbountypostback
Netspendnonetspendpostback
OSITrackernoositrackerpostback
PartnerizeyespartnerizeAPI
PartnerstacknopartnerstackCSV
PepperJamnopepperjampostback
Post Affiliate PronopostaffiliateproCSV
QuinstreetnoquinstreetCSV
Rakuten MarketingyesrakutenAPI
SamCartnosamcartCSV
ShareASaleyesshareasaleAPI
ShopifynoshopifyCSV
SkimlinksnoskimlinksCSV
Tapfiliatenotapfiliatepostback
ThriveCartyesthrivecartCSV
TradedoubleryestradedoublerAPI
TUNE (HasOffers)notuneAPI
Note: all tags should be entered in as lowercase and one word

If you don’t see one on this list, ask me if it can be supported.

Using Merchant APIs

Even though some of the affiliate systems support postback, API is the preferred method. With postback, you only get the recorded time the event is posted to ClickMeter.

A postback can be days after the conversion actually occurred. With API integration the exact date of the conversion is recorded. If using the optional Woopra or SegMetrics integration, it will record the event for the actual conversion time.

The added benefit with API is the multiple tries to successfully load the conversion data into ClickMeter. With a postback, it is normally only one try before giving up. The API method will try for two days before giving up. This ensures you have all conversion data in ClickMeter.

For the merchants that support API, you must add information to the Conversion entry for that merchant in ClickMeter.

It is created in the Notes field of the Conversion entry. If this information is not added, the system will not able able to use the API method to download conversions.

Each system has slightly different configuration requirements. The format of the Notes entry must be in valid JSON format. It is recommended you a JSON validator before inserting. Invalid JSON will cause the API calls not to execute properly.

Replace the information in brackets with the information from your merchant.

Polling of each service is performed hourly on the hour. The exception of ShareASale which is 4 times a day (0, 6, 12, and 18 hour intervals) to be within limits of their monthly API quota.

Note: If it is a new affiliate system for your ClickMeter account, you will need to wait to add the API info until after a first pass of checking links. You can only add notes to a conversion entry only after it is created. An API check is performed daily and enables the option once there are the correct settings for that merchant’s Conversion notes setting.

Awin

[
  {"oauth2": "[OAUTH2]", "publisherid": "[PUBLISHEID]"}
]

Bankrate

[
  {"apikey": "[APIKEY]"}
]

Bluehost

[
  {"affiliate": "[YOURNAME]", "api": "[APIKEY]"}
]

Cake (Per Merchant)

[
  {"fqdn": "[MERCHANTCAKEDOMAIN.COM]", "affiliateID": "[YOURAFFILATEID]", "apiKey": "[YOURAPIKEY]"}
]

CJ

[
  {"secretkey": "[SOMESECRETKEY]", "affiliateid": "[YOURAFFILIATEID]"}
]

Everflow

[
  {"apiKey": "[YOURAPIKEY]"}
]

FlexOffers

[
  {"apiKey": "[YOURAPIKEY]"}
]

Impact

[
  {"accountSID": "[ACCOUNTSID]", "authToken": "[AUTHTOKEN]"}
]

LinkTrust

[
  {"apiID": "[APIID]", "apiKey": "[SOMEKEY]"}
]

Partnerize

[
  {"applicationKey": "[APPKEY]", "userApiKey": "[USERKEY]", "publisherId": "[PUBLISHERID]"}
]

Rakuten Marketing

[
  {"username": "[USER]", "password": "[PASSWORD]", "tokenrequest": "[TOKEN]", "sid": "[SID]", "securitytoken": "[MYTOKEN]"}
]

ShareASale

[
  {"secretkey": "[SECRETKEY]", "affiliateid": "[AFFILATEID]", "token": "[TOKEN]"}
]

Tapfiliate

Tapfiliate is somewhat unique. You need to add the tag and then setup a postback link to a customized webhook page setup for your site.

Setup your link in Tapfiliate by following their instructions.

For step one use ‘subid1’ as the name.

Create the trigger in Tapfiliate as a webhook and use this info:

URL: https://api.[YOURDOMAIN].com/clickmeter/tapfiliate/
Method: POST
Header Name: Content-Type
Header Value: application-json
Body:

{
"conversioncode": "[CLICKMETERCONVERSIONID]",
"conversion.amount": "${conversion.amount}",
"conversion.created_at": "${conversion.created_at}",
"conversion.commissions": ${conversion.commissions},
"conversion.click.id": "${conversion.click.id}",
"conversion.click.created_at": "${conversion.click.created_at}",
"subid1": "${conversion.click.meta_data[subid1]}"
}

TUNE (Per Merchant)

[
  {"networkID": "[MERCHANT]", "apiKey": "[YOURKEY]"}
]

Multiple Account Support of API

If you wish to support multiple accounts you can. Just format the API information in correct JSON format as an array of entries.

Impact Example:

[
  {"accountSID": "[ACCOUNTSID1]", "authToken": "[AUTHTOKEN1]"},
  {"accountSID": "[ACCOUNTSID2]", "authToken": "[AUTHTOKEN2]"}
]

Uploading Conversions

For merchants that don’t offer postback conversions or API you are typically limited how you can track conversions. If the merchant supports the passing of a ‘subid’ variable to their affiliate system, it can be tracked.

This feature allows you to download your reports and upload them to ClickMeter. Track every conversion.

Just download the report from your merchant’s affiliate system and upload it to the specified page in your administration area. You do not need to worry about existing conversions that have already been uploaded.

Currently I support the following systems with CSV upload (URL path in parentheses):

  • AffiliateWP ( /clickmeter/affiliatewp/)
  • ClickFunnels (/clickmeter/clickfunnels/)
  • FirstPromoter (/clickmeter/firstpromoter/)
  • iDevAffiliate (/clickmeter/idevaffiliate/)
  • Kartra (/clickmeter/kartra/)
  • LinkMink (/clickmeter/linkmink/)
  • PartnerStack (/clickmeter/partnerstack/)
  • SamCart (/clickmeter/samcart/)
  • Thrivecart (/clickmeter/thrivecart/)
  • Quinstreet (/clickmeter/quinstreet/)
  • Post Affiliate Pro (/clickmeter/postaffiliatepro/)
  • Generic CSV (/clickmeter/csv/)

To access one of these upload forms you point your web browser to the subdomain setup for tracking. ie. https://api.yourdomain.com/clickmeter/thrivecart/ for the Thrivecart upload form.

To upload CSV file you must:

  1. Extract the CSV from the affiliate system
  2. On the upload form select the merchant from the dropdown (list is updated daily)
  3. Press the Upload button
  4. Record any uploads that did not occur successfully.

Note: ClickMeter ignores already uploaded conversions and will not produce an error. If you are unsure of the last upload select a longer date range. Don’t worry about already uploaded conversion data.

Custom or Unknown Affiliate Systems

The generic option allows us to support unknown or custom affiliate systems. There’s a custom CSV file format you must download. In order for conversions to work, you must add the tag ‘csv’ to each link in ClickMeter.

Example of uploading conversions for a ClickFunnel’s merchant

Link Checking

Only a daily basis, each link within your ClickMeter account is validated. It checks to make sure:

  • If the URI is valid and includes http or https
  • If http:// alerts you should use https://
  • The response of the web page if not 200 code.

If you want to ignore an entry in the report, just add the tag ‘donotlinkcheck‘ to the link in ClickMeter.

Redirection Page

Create a redirection page so your visitors are alerted they are leaving your brand to go to the merchant’s landing page.

The redirection page serves multiple purposes:

  • Prevents affiliate links from getting indexed by Google. ClickMeter has no method to block affiliate links from showing up in search results.
  • Cleaner links displayed on your site. Hide the information you pass to ClickMeter for tracking conversions (ie UTM codes).
  • Stores in ClickMeter the UTM codes used to first visit your website. Useful when needing to track ad performance.
  • Can pixel visitors who have a high interest in the merchant’s product. Can be used as a ‘checkout’ method in Facebook’s pixel for remarketing your audience.
  • Alerts visitors they leaving your brand and going to a merchant’s landing page.
  • Allows the passing of UTM codes and and ‘child’ tag to track the source of a click (i.e. the second button on a review post)
  • Support for Woopra and Active Campaign to tag a visitor who uses multiple devices to visit your blog (i.e. initially visits your blog with a home computer but then later clicks on an email from their smartphone. This is merged into one session).
  • Universal method to track affiliate clicks and conversions. The redirection page can be used in YouTube videos, emails, web pages, social media, etc.) Track every affiliate click with an easy to read affiliate link.

Out of the box, ClickMeter has no way to block affiliate links from Google indexing them. This is bad for SEO, especially for affiliate links. Affiliate links need to be gated behind a rel=”nofollow promotional” link, but ideally never seen Google Bot. With a redirect page, all links are behind a URL that’s part of your primary domain name. This allows you to add an entry to your robots.txt file to block

The redirection page masks ClickMeter and allows to pass info to ClickMeter. To use this service you also need to have installed my other free plugin.

Child Tags

When a visitor clicks on a link, ClickMeter stores from which previous web page they came from (formally known as a referrer).

The problem with a refer it’s not reliable. In addition, it’s not granular enough to tell you if you have the same affiliate link on a page, which link was clicked. This is where a child tag comes in to play. An affiliate child tag allows you to track which link was clicked. This information is then stored in ClickMeter’s system and available for reports. This allows you to know which link yields more clicks and more conversions.

The other useful feature to a child tag is the ability to use instead of UTM parameters. UTM parameters are a powerful method to track the source of clicks and conversions. Unfortunately UTM parameters can make a once clean affiliate link unsightly.

https://larryludwig.com/go/bluehost?utm_source=twitter&utm_medium=social&utm_campaign=firstcampaign

So instead, you have the option to add on to a child tag to denote the source of a click. You can replace the previous link with:

https://larryludwig.com/go/bluehost/twitterfirst

Your naming convention of child tags is however you see fit. You can be as specific or detailed in your child tags and they are optional. Though there are some reserved child tags that have been created.

Reserved Child Tags

  • ml — mailing list (no redirection page)
  • podcast — For use with podcasts (no redirection page)
  • yt — YouTube (no redirection page)
  • nr — no redirection page

If any of the child tags start with any of these entries, the redirection page will not display.

For example a link added to a YouTube video description:

https://larryludwig.com/go/bluehost/ytmyvideo

It will not show the redirection page but all other tracking will function as normal. There are use cases in which showing the redirection page only slows down and interrupts the visitor’s wanting to buy the merchant’s product.

CPC Tracking

ClickMeter is great for tracking CPA (Cost Per Action) campaigns. If a conversion occurs, ClickMeter gets updated via the postback feature or with my add-on API integration or CSV file.

The problem with this is not all affiliate marketing campaigns are CPA. Some campaigns are CPC (Cost Per Click). With ClickMeter there was no way to track CPC campaigns until now.

This new functionality allows for any link within ClickMeter to tally up each click. Get a more accurate reporting of your ad campaigns.

To enable this functionality all you need to do is add the ‘cpc’ tag to the specified link. It doesn’t matter if the link is a part of an affiliate program or a direct standalone link.

By adding the ‘cpc’ tag it will automatically create a ClickMeter Conversion for it and append cmcpc=[s2sidentifier] to the Destination URL. If it’s a not stand-alone link, and part of an affiliate program it will use the subid normally used for the affiliate program.

In order for the system to correctly tally the CPC campaign, you must add to each link the CPC amount. The information is stored in the Notes field per link. The format must be in JSON and just needs the ‘cpc’ name/value pair like the following example below.

CPC information is updated hourly and will reflect in ClickMeter.

Woopra Webform Tagging

While technically not part of affiliate marketing, it is important for tracking individuals on your blog with Woopra. Webform submissions are a critical point in which you capture visitor information. Instead of normally just redirecting to the thank you page, you insert the intermediate redirection page to capture PII (Personal Identifiable Information). The script currently supports:

  • Optinmonster
  • Thrivecart (order complete)
  • WebinarJam/Everwebinar
  • Calendly
  • Optimizepress
  • Gravity Forms
  • WP Forms
  • ConvertKit

the script is: /woopra/id

So if your setup is located at api.yourdomain.com and you are redirecting the thank you page to https://yourdomain.com/thank-you/ you would call the script:

https://api.yourdomain.com/woopra/id?r=https://yourdomain.com/thank-you/

The script does all the rest to tag the existing session in Woopra and identify them with the name and email address.

This script has the added benefit of hiding PII from Google Analytics to your thank you page since that is a violation of Google’s terms of service.

Multi-Device Tagging of Email Clicks

Today’s Internet visitors to your blog use multiple devices. Tracking is problematic since modern day tracking is deterministic and based upon a web browser cookie.

The cookie stored on their smartphone is different than their desktop computer visiting your same website. So analytics software typically treats them as two distinct devices. This causes problems with attribution like with affiliate marketing or selling your own product.

One method around this is using other methods of interaction to track the same user. Enter modern day mailing list services as one method. ActiveCampaign, Drip and ConvertKit all create a unique id for each email address on your mailing list.

You can use this unique id and pass the information from when a visitor clicks on a link in any newsletter or email automation. Since Woopra allows tracking of visitors this makes this very easy to do with some add ons.

With some additional functionality with Google Tag Manager, Woopra, and server code this makes it easy to merge any website visit or affiliate click.

ActiveCampaign

ActiveCampaign while stores each email with a unique ID, it does not have a global option to send this info with each email click. The only way to do this is to ensure every link passes the parameter ?acid=%CONTACTID%

This is a manual process unfortunately.

So if you were to create a link to your home page it would look like https://yourdomain.com/?acid=%CONTACTID%

Otherwise ActiveCampaign integration is built into Woopra.

ConvertKit

With ConvertKit it is easy to add on this functionality. Just sure you enable ‘ck_subscriber_id’ in your settings.

ConvertKit’s API is unfortunately very limited and does not have built-in integration with Woopra. Though I do offer functionality with Woopra via my software. It can at least track and merge multiple devices. Plus can track subscriptions and unsubscription.

Drip

Drip by default automatically adds their __s variable to every link clicked. So no additional action is needed to support Drip.

Drip integration is also available with my software.

Google Tag Manager

Documentation to come.

Changelog

  • 1.0.10
    • Added PartnerStack support
    • Better error reporting for CSV uploads
  • 1.0.9
    • Added support for affiliate link tracking anywhere within ClickMeter you create a link. Previously, redirect modes, first click, max clicks, and expiration date links did not get modified for tracking. The current limitation is any link must be of the same affiliate system.
    • Standardized custom fields for CSV files and API uploads. If used with the optional Woopra support, this info is uploaded to a visitor’s Woopra profile including email matching. The use of custom fields are to be mapped as follows:
      • cp01 — order date
      • cp02 — email
      • cp03 — company
      • cp04 — name or first name
      • cp05 — last name
      • cp06 — address
      • cp07 — city
      • cp08 — state (2 digit US state)
      • cp09 — zip or postal code
      • cp10 — country (2 digit country code format)
      • cp11 — order #
      • cp12 – cp14 customer use
    • Added better error reporting for generic CSV uploads
    • Made Google Ads, Facebook Ads, and Microsoft Ads uploads more resilient to conversion date is always correct.
    • Slowed down API calls to ClickMeter to prevent 429 errors
    • Supported MacOS file CSV uploads
    • Added CreditCards.com support in Bankrate API
    • Miscellaneous bug fixes
  • 1.0.8
    • Added FlexOffers and Everflow API support.
    • Better exception handling for Facebook Marketing API and to not to include conversions older than 7 days.
    • Microsoft API support.
    • Added NetSpend affiliate networks.
    • Quinstreet CSV uploading now supported.
  • 1.0.7
    • Added support for Quinstreet and Red Ventures CSV upload
    • Support for ‘yt’ child tag to not display redirection page.
    • Allow for reserved child tags to not display the redirection page when just beginning with the child tag. Which allows for more info to be sent (ie. ml-myspecialtag)

FAQs

I have a link that I wish to change. The new link will no longer be using an affiliate system. How do I make sure it doesn’t automatically add a ‘subid’?

Remove the affiliate system (i.e. ‘impact‘) and ‘automanaged‘ tags. Also, make sure you enter a clean link for the destination URL as well.

What happens when I replace an existing merchant link with a new one?

If it auto-detects or you left the existing tag for that affiliate system, it automatically adds the correct ‘subid’ information to ensure tracking still happens.

What happens if I replace an existing affiliate link with a new link in a different affiliate system?

To ensure a correct change over make sure you remove the affiliate tag (i.e. ‘impact’) and remove any conversion entry. You can optionally remove the ‘automanaged’ tag as well.

If the new affiliate system cannot be detected automatically, add the new tag (i.e. ‘cj’) to the link.

I’m using an affiliate system that supports multiple ‘subid’s can I manually add these to an affiliate link?

Yes! Impact for example supports ‘subid1’ which we use, but you can also pass ‘subid2’, ‘subid3’ and ‘shareid’. Just append these variables and the plugin will not touch these links.

For CSV uploads does it matter how often you upload data?

No, and they can overlap too! If the data has already been uploaded you cannot replace the existing data, but you don’t have to be concerned if data has already been uploaded for a conversion. The data will not be counted twice. You are best to overshoot the data you upload if you aren’t sure when was the last upload.

How do I set Cake timezone to GMT?

For each Cake account, you must set the timezone to GMT in order to get the correct conversion date from their API. To do this, login into your admin console and select ‘Account Info’.

Next, in the Timezone drop-down list select ‘GMT Standard Time’ and press the ‘Save’ button to complete the change.