type:
integration
system:
iDevAffiliate
name:
iDevAffiliate Tracking
description:
Basic iDevAffiliate tracking for FoxyCart
tag:
affiliate, tracking, tutorial

iDevAffiliate Integration

Integrating iDevAffiliate with FoxyCart is simple. Here's a quick rundown:

Integrating with FoxyCart v2.0

You can integrate with iDevAffiliate directly within iDev's administration, following the instructions on this page and selecting “FoxyCart” from the list.

Alternatively, you can follow these instructions:

Instead of creating a new receipt template, you can use the new template → configuration settings.

  1. Go to that page in the FoxyCart admin (templates → configuration).
  2. Find the “Add custom header and footer code to your templates” section under the “Cart” section
  3. Check that box to expand that section.
  4. Add this code:
    {% if context == "receipt" %}
    {# Replace this line with code from iDevAffiliate #}
    {% endif %}
  5. Copy/paste the code provided by iDevAffiliate, replacing the “Replace this line”, but maintain the “if” and “endif” lines.
  6. Replace two lines from the steps below as follows:
    ^^receipt_only_begin^^ -> {% if first_receipt_display %}
    ^^receipt_only_end^^ -> {% endif %}
  7. You should be left with something like this:
    {% if context == "receipt" %}
      {% set products_purchased = "" %}
      {% for item in items %}
        {% set products_purchased = products_purchased ~ item.code %}
        {%  if item.item_number != items|length  %}
          {% set products_purchased = products_purchased ~ "|" %}
        {% endif %}
      {% endfor %}
     
      {% if first_receipt_display %}
      <img border="0" src="https://www.YOURDOMAIN.com/idevaffiliate/sale.php?idev_saleamt={{ total_order }}&idev_ordernum={{ order_id }}&products_purchased={{ products_purchased }}" width="1" height="1">
      {% endif %}
    {% endif %}

To track the total price of items only, you'll make a small change to the iDev code above: replace total_order with total_item_price - and that will send the cart subtotal to iDev.

Note that this will send the amount without discounts applied. In order to do that, you can set a twig variable like this at the top of the script: {% set discounted_total = total_item_price + total_discount %}

You'll then use {{ discounted_total }} in the parameter value instead of {{ total_order }}

  1. Save the template settings.
  2. Test.

iDevAffiliate v7.0

Basic setup pretty much identical to v4.x below.

Coupon Code Commissioning

If you'd like to take advantage of the Coupon Code Commissioning feature available with iDevAffiliate, use the following code.

This requires FoxyCart version 1.0+

Place this code before the img code you get from your iDev account as explained later in this page.

Versions 1.0 - 1.1

{% set active_coupon = "" %}
{% for coupon in coupons %}
  {% set active_coupon = coupon.code %}
{% endfor %}

Then append this to the end of the img src value:

&coupon_code={{ active_coupon }}

Which will give you something like this:

{% set active_coupon = "" %}
{% for coupon in coupons %}
  {% set active_coupon = coupon.code %}
{% endfor %}
 
^^receipt_only_begin^^
<img border="0" src="https://www.YOURDOMAIN.com/idevaffiliate/sale.php?idev_saleamt={{ order_total }}&idev_ordernum={{ order_id }}&coupon_code={{ active_coupon }}" width="1" height="1">
^^receipt_only_end^^

Versions 2.0+

{% set active_coupon = "" %}
{% for code, coupon in coupons %}
  {% set active_coupon = code %}
{% endfor %}

Then append this to the end of the img src value:

&coupon_code={{ active_coupon }}

Which will give you something like this:

{% set active_coupon = "" %}
{% for code, coupon in coupons %}
  {% set active_coupon = code %}
{% endfor %}
 
^^receipt_only_begin^^
<img border="0" src="https://www.YOURDOMAIN.com/idevaffiliate/sale.php?idev_saleamt={{ order_total }}&idev_ordernum={{ order_id }}&coupon_code={{ active_coupon }}" width="1" height="1">
^^receipt_only_end^^

Per-Product Commissioning

If you'd like to take advantage of the Per-Product Commissioning feature available with iDevAffiliate, use the following code.

This requires FoxyCart version 1.0+

Place this code before the img code you get from your iDev account as explained later in this page.

{% set products_purchased = "" %}
{% for item in items %}
  {% set products_purchased = products_purchased ~ item.code %}
  {%  if item.item_number != items|length  %}
    {% set products_purchased = products_purchased ~ "|" %}
  {% endif %}
{% endfor %}

Then append this to the end of the img src value:

&products_purchased={{ products_purchased }}

Which will give you something like this:

{% set products_purchased = "" %}
{% for item in items %}
  {% set products_purchased = products_purchased ~ item.code %}
  {%  if item.item_number != items|length  %}
    {% set products_purchased = products_purchased ~ "|" %}
  {% endif %}
{% endfor %}
 
^^receipt_only_begin^^
<img border="0" src="https://www.YOURDOMAIN.com/idevaffiliate/sale.php?idev_saleamt={{ order_total }}&idev_ordernum={{ order_id }}&products_purchased={{ products_purchased }}" width="1" height="1">
^^receipt_only_end^^

iDevAffiliate v6.0

Pretty much identical to v4.x below.

iDevAffiliate v5.0

Pretty much identical to v4.x below.

iDevAffiliate v4.0

IMPORTANT: If you're using FoxyCart prior to v0.7.0 you'll need to host iDevAffiliate securely over SSL (https).
  1. Check iDevAffiliate's page for instructions.
  2. Login to your iDevAffiliate manager and click on the Cart Integration link.
    • It doesn't matter what you call your variable names. All that matters is that you put in the right placeholders later, so just call your variable names something descriptive like order_total and order_id.
    • iDev will generate some code that should look something like this:
      <img border="0" src="https://www.YOURDOMAIN.com/idevaffiliate/sale.php?idev_saleamt=XXX&idev_ordernum=XXX" width="1" height="1">
  3. Replace the XXX with FoxyCart placeholders like ^^order_id^^ and ^^order_total^^, and surround the code with the receipt only tags to prevent re-triggering the code if you use re-visitable receipts:
    ^^receipt_only_begin^^<img border="0" src="https://www.YOURDOMAIN.com/idevaffiliate/sale.php?idev_saleamt=^^order_total^^&idev_ordernum=^^order_id^^" width="1" height="1">^^receipt_only_end^^
  4. Create a separate receipt template in your FoxyCart admin. Include your modified code at the bottom of your template.

Site Tools