Advanced link redirection

Tapstream campaigns can redirect users based on their device type, a split test between multiple treatments, or both simultaneously. These features are available on any Tapstream campaign.

You can access this functionality by pressing the Advanced button when creating or editing a Tapstream campaign.

Destinations can be static (like https://tapstream.com), or dynamic (like https://tapstream.com/foo=).

The destination definition that a user was sent to will appear in your performance reports, allowing you to see per-destination traffic.

Device-aware redirection

Tapstream will recognize device types and redirect them to device-specific destinations that you define. To define device-specific destinations, take the following steps when creating or editing a Tapstream campaign:

  • Press Create New Destination
  • Enter a destination name (like "Google Play Store")
  • Enter a device-specific destination, like https://play.google.com/store/apps/details?id=com.google.android.gm
  • Select your target platform from the "Device" dropdown, like "Android"

Your campaign must include a fallback URL targeting the "Any" device type. This will be used for devices that do not match the definitions you create.

Device typeDefinition
AnyAny device. Every campaign must include at least one destination of this type, which acts as a fallback.
AndroidAny Android device.
Android - Intent URLAny Android device that already has your app. Must follow Google's Intent URL spec.
iOS - iPadAny iPad.
iOS - iPad Registered URLAny iPad that already has your app. Must be an iOS deep link.
iOS - iPhone/iPod TouchAny iPhone or iPod Touch.
iOS - iPhone/iPod Touch Registered URLAny iPhone or iPod Touch that already has your app. Must be an iOS deep link.
Windows PhoneAny Windows Phone device.
Mac OS XAny Mac OS X device.
Windows 8Any Windows 8 device.
Kindle FireAny Kindle Fire device.
Kindle Fire - Intent URLAny Kindle Fire device that already has your app. Must follow Google's Intent URL spec.
Facebook Preview crawlerThe Facebook preview crawler. Useful for altering the appearance of news posts that contain Tapstream links.
Twitter Preview crawlerThe Twitter preview crawler. Useful for altering the appearance of tweets that contain Tapstream links.

Split testing

If you define more than one destination per device type (including the "Any" device type), Tapstream will perform a split test between the destinations you define. The chance of selection of each split test treatment will be weighted by its "Weight" field, visible when editing or creating destinations.

Users will only be eligible to be sent to treatments that match their device type. For instance, if you define two iPhone destinations, and one Android destination, iPhone users will randomly receive one of the two iPhone treatments. Android users passing through your campaign link will be redirected exclusively to the Android destination.

Dynamic redirection

Tapstream destination URL definitions optionally accept macros that resolve to the values of keys on the inbound link's query string.

This is useful for translating dynamic destinations for product listings, profile IDs, and so on in to deep links and other device-specific destinations. It requires no setup in advance, and works with all Tapstream campaigns.

When defining your campaign's destination URLs, you can specify that macros should either URL-encode or URL-decode the associated values. Macros are invoked as follows:

  • { some_key:"some_default" }, which will resolve to the URL-encoded value of the some_key query-string key, or, if the value for that key is absent, the URL-encoded version of the string some_default
  • {{ some_key:"some_default" }}, which will resolve to the URL-decoded value of the some_key query-string key, or, if the value for that key is absent, the string some_default exactly as provided.

For example, consider the Tapstream campaign link http://taps.io/example/, with a destination URL of exactly the following:

{{ url:"https://tapstream.com" }}/{{ foo:"baz" }}

Inbound clicks will then redirect as follows:

Inbound click URLWill be redirected to
http://taps.io/example https://tapstream.com/baz
http://taps.io/example?url=https%3A%2F%2Fgoogle.com http://google.com/baz
http://taps.io/example?url=https%3A%2F%2Fgoogle.com&foo=qux http://google.com/qux

Note that in reports, the destination URL definition (that is, {{ url:"https://tapstream.com" }}/{{ foo:"baz" }}, from the example) will be used, not the actual macro-replaced destination that the user was redirected to.