Debunking some PassKit “myths” in The Standard

Another piece of great coverage published in The Standard on PassKit and Passbook although there are some inaccuracies. Knowing that many others may have the same misconceptions about PassKit, we are here to rectify them and debunk the “myths” of PassKit:

 1)     “Passbook was difficult to download and not capable of making electronic payments.”

  • Passbook is an app, pre-installed into every iPhone, which lets users carry around mobile coupons, boarding passes, event tickets, store cards and other types of content that you may have typically carried around in paper or plastic format, like a coffee store loyalty card. It’s a native app, meaning it cannot be installed, or deleted.

 2)     “It was not easy for merchants to access Passbook when it was first launched because people are frustrated by complicated technologies,” Tomes said.”

  • To clarify, I was actually saying that although Passbook is an incredible tool for business and consumers, it can be complex for merchants to create and maintain the Passbook Passes. Businesses and marketers need a huge amount of resources, time and money, to develop and push a piece of mobile content to a device on their own. This is where we spotted a market opportunity and started PassKit. Our Pass Designer makes it easy for anyone to create and launch a mobile Pass!

 3)     “So the former bank employee-turned-entrepreneur came with a solution: PassKit. The app facilitates electronic payments and makes Passbook easier to download.”

  • PassKit is not an app, nor are we part of Apple’s Passbook app. We don’t make Passbook easier to download, because it’s native. We use our secure, proven and extensive cloud infrastructure to help businesses develop, distribute and manage mobile wallet content. I’d also like to point out that I didn’t come up with this idea on my own – PassKit was and is very much a joint effort between me and my colleague Nick Murray, co-founder and CTO.

 4)     “Corporate users in Hong Kong usually pay about HK$800 per month for unlimited use of Passkit.”

  • HKD $800 for unlimited use of PassKit is not quite right! There is a limit of 5,000 Passes, but unlimited updates to each of those 5,000 Passes.

Now that that’s settled, check out the article here.

The Standard_P.23_25Mar13

 

Technorati Tags: , ,

PassKit featured in the Hong Kong Trader

Hong Kong Trader, an award-winning publication focused on small businesses, featured PassKit in March. You can read the whole article here, but if you don’t have time, here are some of our favourite quotes…

  • “The PassKit system lets clients take advantage of the company’s cloud-based technology to design and issue passes for all major mobile platforms.”
  • “Since September, PassKit has produced more than a quarter of a million passes. The company’s website attracted 100,000 unique visitors in its first week, and still counts 60 to 70 new sign-ups for its services daily.”
  • “PassKit offers merchants such as Subway a quick and inexpensive way to create digital passes, including coupons and loyalty programmes to attract customers.”
  • “PassKit raised US$1.2 million in Series A funding from Hong Kong-based private investors to help facilitate fast growth.”
  • “Some people only take tech companies seriously if they come from the US and specifically Silicon Valley. We hope to see Hong Kong developing into the next Silicon Valley in Asia.”

Hong Kong Trader_20Mar13

Technorati Tags: , , , ,

Tech Ritual highlights the unique benefits of PassKit

We’re pleased as punch that Tech Ritual has published an article extolling the virtues of PassKit. The article says that “PassKit is the easiest way to create, distribute and manage Apple Passbook Content across all major mobile platforms. The company announced that it has closed USD 1.2M in Series A funding and is using this to help hundreds of businesses across the world to increase sales and engage more deeply with their customers through any mobile device.”  Yes we do, and we’re glad the media think this too!

The piece also highlighted that we were the first to market with a Passbook Designer which empowers literally anyone to create a pass and launch a mobile marketing campaign in just a few clicks; that we have already issued over a quarter of a million passes globally; and that our cloud-based solution can easily scale up or down depending on demand.

Check out the full article by clicking here. (only available in Chinese)

Tech Ritual_7Mar13

Technorati Tags: , , ,

Building Perpetual Loyalty

PassKit: Marketing in the Moment

How Businesses Need to Leverage Facebook’s One Billion Users

Recent discussions with customers and prospects have consistently involved utilizing social media to decrease marketing costs and increase ROI (return on investment) on marketing campaigns.

Can you relate to some of these comments?

“We’ve built a Facebook fan page, and have increased Facebook likes, but it is not generating business.”

“Facebook sponsored ads and Facebook banner ads have increased Facebook reach but there is no real opportunity to consistently convert to paying customers. “

“We keep posting great content on our Fan page and it has increased Facebook fans, but how can we really exploit the power of social media to not just engage with our audience, but to influence and inspire action.”

The majority of the businesses we spoke with have shared that most of their online and offline marketing is focused on lead generation and that more than 88% of sales are conducted offline.  So if we take a closer look, much of their Facebook efforts are purely focused on gaining users, analyzing user preferences to create engaging content that eventually increases lead generation. The critical point, where we see businesses fail, is creating that compelling element to influence users to take their action offline.

So the question that begs is…Why focus on driving customers offline?

PassKit: Driving Online to Offline

Benefits of O2O

We understand people and we know technology, especially when it comes to mobile. Where most businesses may think of the mobile device as an extension of digital channel promotions, we know the real power is the ability to connect people from the online world and to influence offline behavior.

Creating an opportunity offline allows your company to expedite closing of a transaction (i.e. immediate answers to customers questions, highlight timed offers, etc.). The additional benefit of offline transactions is the opportunity to influence customer spending beyond what was originally planned.

Per thesocialskinny.com’s aggregated social media stats article for 2012, “64% of consumers will research online before buying offline” and “55% of consumers prefer offline commerce”. What we found as the real benefit to businesses to increase offline (in-person) sales is that “45% of people bought more when in the store”.*

This can apply to businesses offering both projects and/or services. For example, if you connect, via online recommendations, with a person in wealth management they will help to put your money in a place through standard investment portfolio offerings. Through conversations, they find out that you are also interested in being part of a business venture but you don’t want to start it up yourself. The wealth manager can then sell you on becoming an investor of a local business with the potential of greater returns.

Should your marketing focus on bringing your online customers offline? Well, only you can answer that question. But we know the common focus for many marketing campaigns is to generate opportunities that expedite a decision while making it completely convenient for the consumer.  And today, the ability to provide customer convenience along with speed to market has been proven when utilizing both social media and mobile technologies.

“91% of all mobile internet use is “social” related.”*

With PassKit’s Facebook Connect Solution, you can 1) utilize Social Media channels, like Facebook to drive customers online to offline actions and 2) through delivery of passes via PassKit, the speed of delivery of marketing to your customer is achieved.

(Click infographic to enlarge) (Click to download PDF)

PassKit Facebook Connect Solution InfographicDriving O2O via Facebook Connect

While many businesses will use a social media channel like Facebook as a customer relationship management tool, we focus on using Apple Passbook passes to create more effective opportunities to motivate consistent offline behavior. Therefore, when we created the Passkit Facebook Connect solution we had two goals in mind:

  1. To allow businesses to efficiently acquire new customers from Facebook’s One billion users without having to create a Fan Page, acquire likes, etc.
  2. To create opportunities to drive customers to transact offline.

How do we achieve goal number 1?

Instead of using Facebook as the tool to manage customers, we use Passkit plus Facebook information to quickly create personalized Passbook membership passes. This then becomes a loyalty program, which has been a proven method of motivating customers to offline behavior.

But, the issues of most loyalty programs these days are broad promotions and lack of in-depth customer insights to create marketing campaigns that make sense. Take a look at many of the loyalty programs in place today. The essence of these programs is to increase advocacy of its customers by rewarding behavior with something of value (reward points, special offers and promotions). What happens with many of these programs is a short-lived relationship for these reasons:

  • Physical cards – out of sight out of mind
  • Referrals – no motivation to refer, or may forget
  • Emails – may not read or take immediate action
  • Discount Focused – customers only take action when it is value savings
  • Relationship Management Tool (website, customer service): not convenient to see what benefits apply to customer

From our experience, we find the easiest way to create stronger and longer-term relationships with a customer is to inspire a customer journey that is completely seamless and convenient to the customer. Put simply, it has to be extremely easy to transact with your business.

With PassKit, our technology is not only focused on complete convenience to our customers, but it also extends to their customers through the delivery of a pass using PassKit.  So to overcome many current loyalty program inefficiencies, creating a very convenient to access electronic loyalty card was the solution.

At this point, we have only defined the tool of choice. So how do you leverage Facebook?

With Passkit’s Facebook Connect Solution, a user gets an invite to join your loyalty program. How this message is delivered can happen using multiple distribution methods, but essentially the user is taken to your branded mobile landing page. The user accepts via Facebook Connect, which then automatically posts to the user’s wall:

“I just joined XXX Loyalty Program, I get $30 when I refer three friends. ”

The purpose of this post is that it provides a really simple and convenient way to automate and increase user acquisition through “Member Get Member” promotions. How do we know this works?

When we look at any social community online or offline, the true value is the inherent nature of “trust” that is built within each user and their network of friends.  It is this trust that has proven time and time again to be what inspires viral activity that breaches a reach of users beyond your current customer base.

“90% of consumers trust recommendations from people they know.”*

So when a user sees a family or friend join the loyalty program, there is this sense of instant credibility and if they join they will enjoy the same benefits. This method has been proven everyday on Facebook. How many times have you liked a page or post because you saw another friend has done the same?

With this single action of the user accepting via Facebook Connect, you have now access to Facebook’s One billion users! Well, of course that depends on viral ability of your member get member promotions.  But, as you can see, we didn’t even mention anything about building a Fan Page or promoting via paid advertisements.

Is that all there is to it? If you remember we also mentioned the second goal of creating opportunities via Passkit and driving customers offline, which is where the true value to any business’ bottom line.

PassKit: Concept to Cash

C2C The Real Value to Bottom Line Results

At PassKit, our mission is to speed up concept to cash (C2C). What this means is that the faster you can move from an idea or trend (concept) and convert this into buying (cash), your business will thrive, leaving your competitors behind.

Think about the last marketing campaign your company launched. You do your analysis, create a concept, execute, promote and track. How long did this usually take, even for a simple campaign? How effective was the campaign to incite customer action? What most businesses want to achieve is to take this whole process and to do it as fast as possible.

Going back to our Facebook Connect Solution, the only thing that was achieved was to automate and inspire user acquisition through member get member promotions.  Once a user has your loyalty pass, the idea is that you no longer have to live within the constraints of Facebook to market to your customer. You’ve got a direct line to creating an intimate relationship with that user’s one friend that has no social profile, their mobile phone. Essentially, with this loyalty pass, your brand now lives on their phone.

At this point what do you know about every new loyalty member? Remember when we mentioned that one click via Facebook Connect to accept your loyalty program invitation? Did you know that by that one click, the user has agreed to share their public Facebook information?  With this information, you now have the ability to understand your new member via their online-defined preferences and create marketing campaigns that are more targeted and relevant to each user.

For example, a coffee shop that wants to drive traffic during slow hours of 2-4pm can create a campaign to target working singles to take a quick afternoon break from work and mingle over a free coffee.

Sounds simple? Well here is where you can really put your creative marketing hats on to really drive more effective re-targeting campaigns.

After some time, you can analyze your loyalty member’s redemption behavior to gain increased insight.  For example, tying the loyalty customer to your point of sales system to create historical buying habits. You can also tie the user into your CRM system to track online behavior through email or social media marketing.

The point is that when you tie together user preferences, online behavior and offline actionable insights a business can take the information today and execute a more relevant re-targeted campaign that is delivered within minutes using PassKit. There is no need to go through a complex marketing process to deliver a simple custom message.

“We see that you live near our coffee shop and you love our pastries, come by today and try our new blueberry scones.”

The acquisition of each user’s actionable insights is what allows a business to quickly create a very effective, custom marketing campaign that can be rapidly delivered to the consumer for immediate action. The value for the customer is complete convenience to connect with the business and experience a very personalized, high level of service.

Getting Back to Basics

Overall, the business objectives of PassKit’s Facebook Connect Solution is to decrease marketing costs, increase brand visibility beyond Facebook and drive customers to take action online and offline. Your direct line to the user is now through your branded pass that now lives on their mobile phone.

Here is a note of caution, once a user allows you access to their mobile phone, treat that relationship with the utmost respect. Maintain communications to create real value to the user.

So the initiative for smart businesses today is to access the instant credibility with a user’s trusted Facebook network AND their phone.  Once trust and advocacy of your company is gained, it is really in the control of the business to drive smart, creative, targeted and relevant marketing campaigns.

It’s time to get back to basics. Use technology to get to know your customers, more than they realize, and find better ways to build stronger relationships that matter to your customer.

Click image below to test-drive our Facebook Connect Solution. (Access via mobile device)

Facebook Connect Passbook Pass

Click above image to test-drive our Facebook Connect Solution. (Access via mobile device)

{Question} Do you agree that electronic loyalty passes can increase consumer offline behavior? Tell us what you think. Leave a reply.

*Sources: allfacebook.com, mashable.com, mediabistro.comthesocialskinny.com, socialtimes.com, upstreamcommerce.com

                

Technorati Tags: , , , ,

The Official PassKit C# wrapper class released

The official PassKit C# wrapper class is now available. This makes it even quicker and easier to access the PassKit API via C#.

Follow the 10 Easy steps to create a new C# Project with PassKit API Wrapper support:

  1. Download & unzip the contents of ‘PassKit CSharp API Wrapper v0.2.zip‘ into a (new) folder;
  2. Create a new Project in Visual Studio;
  3. Open solution explorer;
  4. Right click ‘References’;
  5. Click ‘Add Reference’;
  6. Click ‘Browse’;
  7. Go to the folder where you unzipped the files in step 1;
  8. Add references to both ‘PassKitAPIWrapper.dll’ & ‘RestSharp.dll’;
  9. Make sure you add ‘using PassKitAPIWrapper;’ to the top of your CSharp file;
  10. Good to go!;

Examples:

List templates

string apiAccount = 'accountname';
string apiSecret = 'apisecret';

PassKit pk = new PassKit(apiAccount, apiSecret);
PassKitResponse result = pk.GetTemplates();
// Do something with result Dictionary

Get passes for template

string apiAccount = 'accountname';
string apiSecret = 'apisecret';

PassKit pk = new PassKit(apiAccount, apiSecret);
PassKitResponse result = pk.GetPasses("Lesson package");
// Do something with result Dictionary

Update template

string apiAccount = 'accountname';
string apiSecret = 'apisecret';

// Create Dictionary with template fields you want to update
Dictionary fields = new Dictionary();
fields["Terms_label"] = "Terms & Sausages";

PassKit pk = new PassKit(apiAccount, apiSecret);
PassKitResponse result = pk.UpdateTemplate("Lesson package", fields);
// Do something with result Dictionary

Issue pass for template

string apiAccount = 'accountname';
string apiSecret = 'apisecret';

// Create Dictionary with pass fields
Dictionary fields = new Dictionary();
fields["Student name"] = "Test student";
fields["Balance"] = "10";
fields["Issue date"] = "2013-03-26";
fields["Expiry date"] = "2014-03-26";

PassKit pk = new PassKit(apiAccount, apiSecret);
PassKitResponse result = pk.IssuePass("Lesson package", fields);
// Do something with result Dictionary

Get pass details (via template & serial)

string apiAccount = 'accountname';
string apiSecret = 'apisecret';

PassKit pk = new PassKit(apiAccount, apiSecret);
PassKitResponse result = pk.GetPassDetails("Lesson package", "12345678900000");
// Do something with result Dictionary

Get pass details (via unique pass-id)

string apiAccount = 'accountname';
string apiSecret = 'apisecret';

PassKit pk = new PassKit(apiAccount, apiSecret);
PassKitResponse result = pk.GetPassDetails("JCecLdsk9mmC");
// Do something with result Dictionary

Update pass (via template & serial)

// Create Dictionary with pass fields
Dictionary fields = new Dictionary();
fields["Balance"] = "5";

PassKit pk = new PassKit(apiAccount, apiSecret);
PassKitResponse result = pk.UpdatePass("Lesson package", "12345678900000", fields);
// Do something with result Dictionary

Update pass (via unique pass-id)

// Create Dictionary with pass fields
Dictionary fields = new Dictionary();
fields["Balance"] = "5";

PassKit pk = new PassKit(apiAccount, apiSecret);
PassKitResponse result = pk.UpdatePass("JCecLdsk9mmC", fields);
// Do something with result Dictionary

The C# API Wrapper currently only supports the basic methods. Support for the other API methods will be added on regular basis.

Check readme.txt in ‘PassKit CSharp API Wrapper v0.2.zip‘ for a list of supported methods.

Full code repository with example project can be found at our Google code-base.

We trust you find this wrapper useful and please leave any feedback or comments below.

Technorati Tags: , , , , ,

Fact of the day

Latest study from SXSW shows that 50% of apps never get opened more than 4 times. The best quote of the day was that app icons shake when you close them because they are afraid to be deleted. Combine that with the fact that a successful app now costs $1MM to develop and launch and the challenge of requiring Wi-Fi/data to access and marketers realize they must look for other ways to engage fans. Other opportunities such as fully branded PassKit Passes have a much lower price point, and allow brands to build and engage a mobile database.

Leading the Mobile Wallet Revolution

Introducing PassKit ®:

The Technology Company Leading the Mobile Wallet Revolution

Having recently closed US$1.2M in Series A funding, this fast-growing company is helping hundreds of businesses across the world to realise the potential of the mobile wallet.

Hong Kong, March 7, 2013 – PassKit®, the easiest way to create, distribute and manage Apple® Passbook® Content across all major mobile platforms, today announced that it has closed US$1.2M in Series A funding and is using this to help hundreds of businesses across the world to increase sales and engage more deeply with their customers through any mobile device. The Hong Kong-based technology start-up has grown from two employees to 10 since its launch in June 2012 and is quickly expanding as it provides secure, convenient mobile wallet solutions to a fast-growing worldwide customer base. To date, PassKit has issued over a quarter of a million Passes globally.

PassKit is the first company to develop and bring to market a true What You See Is What You Get (WYSIWYG) interface and Passbook Designer, enabling anyone to design and roll out mobile coupons, boarding passes, event tickets, store cards and other forms of mobile payment in minutes. The solution enables customers to create mobile wallet passes for both iOS and Android devices. In combination with the PassKit API, and other supporting tools, any business can quickly and easily integrate dynamic, secure mobile passes into their existing systems, providing their customers with a convenient, engaging way to interact with the brand.

According to IDC, 712.6 million smartphones were shipped globally in 2012, a 44.1% increase from 2011. The analyst house also predicts that the worldwide shipment of tablets will reach 165.9 million units in 2013. Unrelenting growth in the smartphone and tablet market is creating huge opportunities for businesses to target end users through their mobile wallets. However, according to Econsultancy, only 27% of companies worldwide plan to implement location-based mobile marketing in 2013. In fact, many have been reluctant to embrace the trend due to high set-up costs or the in-depth technical knowledge required to roll out a mobile wallet campaign. PassKit, a pioneer of the mobile wallet scene, has already solved these problems for hundreds of customers all over the world – from Sweden to Japan, Hong Kong to the US. The company is committed to bridging the gap between consumers and companies who want to unlock the potential of the mobile wallet – with no prior technical knowledge, no upfront investment or complex set-up required.

With its proven, cloud-based solution, PassKit gives businesses, marketing agencies and developers the flexibility to roll out almost any mobile marketing campaign imaginable and profit from the mobile wallet revolution. “The mobile marketing campaign we launched with PassKit saw 10,000 passes issued in 24 hours. PassKit has made mobile marketing easier than ever before, from creating to distributing to tracking coupons issued to our customers,” said Yvonne Ma, Marketing Manager, Uppal Hospitality Group (Franchise Owner of Subway Hong Kong). “As a result we are more connected to our customers. Not only does PassKit’s technology enable us to drive sales, more importantly, it helps us foster stronger loyalty with subs-lovers through the mobile wallet. Unlike traditional paper coupons we can respond to general trends or individual habits and preferences in an instant.”

“We were first to market with a Passbook Designer which empowers anyone to create a pass and launch a mobile marketing campaign in just a few clicks. We have already issued over a quarter of a million passes globally and our cloud-based solution can easily scale up or down depending on demand,” said Paul Tomes, CEO and co-founder of PassKit. “We have witnessed many innovative, forward-thinking businesses such as Subway capture sales and build a stronger connection with their customers through the mobile screen, which is increasingly becoming the main point of engagement brands have with their target audience. We are committed to helping retailers, marketers and developers to capture the hearts and minds of new customers by jumping into their mobile wallets.”

– END –

About PassKit

Founded in June 2012, PassKit is a Hong Kong-based technology start-up which is leading the mobile wallet revolution. PassKit provides users with the technology and capabilities to confidently and effectively realize the potential of the mobile wallet. PassKit has issued a quarter of million passes globally, its customers are spread all over the world – from Sweden to Japan, Hong Kong to the US. More information about the company can be found at http://passkit.com/.

Media Contacts

Rebecca Lansdell Clara Liu
The Hoffman Agency The Hoffman Agency
Tel: +852 2231-8103 Tel: +852 2231-8109
email: rlansdell@hoffman.com email: cliu@hoffman.com

Technorati Tags: , ,

Mystic 8 Ball Pass to demo PassKit image upload capabilities

Objectives:

  • Demonstrate the power of dynamic image upload in PassKit Passes;
  • Make the code available to anyone so they can quickly integrate and implement image upload into their own campaigns and Passes.

A little background on PassKit image upload:

The PassKit image upload works in a really cool and efficient way. If you want your image on a pass, you can use the following process:

  1. Update the image to PassKit by using the pk_image_upload API method. The pk_image_upload method takes 2 parameters:
    1. imageType;
    2. imageFilePath;
  2. More info on the image upload method can be found here: https://code.google.com/p/passkit/wiki/UploadImage
  3. The image upload method will return a unique ID for the image;
  4. To use this image on a pass, we have to update one of the following pass fields with the image ID when doing a pass update (via API call):
    1. ‘thumbnailImage’;
    2. ‘stripImage’;
    3. ‘logoImage’;
    4. ‘footerImage’;
    5. ‘backgroundImage’;
    6. ‘iconImage’;

Mystic 8 Ball Flow:

The Mystic 8 Ball Pass experience has the following flow:

  1. User installs the Mystic 8 Ball pass;
  2. On the back of the pass there is an ‘ask’ link with the pass-id embedded in the link;
  3. After clicking the link, the user is directed to mystic8ball.com as a a simple web-form (that has the pass-id stored as hidden value);
  4. The user inputs his/her question into the question box;
  5. The question & pass-id are posted back to the server, where the post-script picks a random image from the mystic8ball.com image/answers directory;
  6. All the images have the answer in the name, so for example the image for “Ask again later” is called ask_again_later.png. This way we get the short image text as well, without having to store this reference in a database or array. This makes it easier to add new answer images later without having to change anything in the code;
  7. Since we have 20 images with answers, and we expect the 8 ball to be used a lot, it will be very likely that the script will result in a lot of upload-traffic. Therefore we implemented a simple caching script that checks if the image was uploaded already:
    1. If image uploaded before: use the cached image ID (one unique ID per image) and don’t do an upload;
    2. If image not uploaded before: upload the image using the PassKit pk_image_upload method, and store the returned image ID in the local cache;
  8. After we have the image ID, we update the following fields on the pass:
    1. ‘stripImage’ (this is the most important one, since it changes the image on the front of the pass. This image holds the Mystic 8 Ball answer in a nice graphic representation);
    2. ‘Status’ (we update this with the textual representation of the answer that we extract from the image file-name. Underscores are replaced with spaces);
    3. ‘Question counter’ (this field is on the back of the pass, and shows how many questions you have asked);
    4. ‘Flip’ (we update this with a text string that says: ‘ask again’;

The main reason for point 8B and 8C is that when these fields get updated, those messages are also pushed to the lock-screen, this looks really cool, and really shows the added value & potential of the clever PassBook marketing.

Link to code repository

Result:

Technorati Tags: , , , ,

PassKit integration with Passbook Pass Lesson Management System (in CakePHP)

We are very honoured to have Patrick Kosterman, co-Founder of Rock Kong, writing a special guest post for us this week. He has recently used the PassKit API to implement Lesson Passes for his students. He tells us what he set about to do and how he achieved this. We thoroughly recommend you read through this whole article – even if you don’t run a rocking guitar lesson business – and then check out the cool demo video at the end. Over to you Patrick

How Rock Kong integrated PassKit into their Lesson Management System

Objectives:

  • Be first to Hong Kong market with a Passbook Lesson Pass
  • Provide ‘ultimate convenience’ to Rock Kong’s customers:
    • remove the need for paper
    • remove the need for remembering how many lessons are left, and;
    • make use of every student having a smartphone
    • give every student their very own ‘Lesson Pass’
  • Develop for less than HK$5000 and, have a maintenance cost of less than HK$500 per month
  • Increase teaching time for tutors, by removing ‘admin’ for tutors
  • Attract more customers by having a ‘cool’ marketing campaign (and improved SEO results)

Background

When running our music school we ran into a couple of problems. First, we have our own Lesson Management System (LMS), that we use to book lessons and register lesson packages for the students. This is something that is consuming more and more time, since we have a few teachers that work for us and quite some students. Secondly, upon till now we have not allowed students access to the LMS, since it’s an internal system.

When I first looked at Passbook I saw an opportunity to solve a few of the above problems:

  1. With a lesson pass, we could get rid of having ‘lesson packages’ in our system, and every student will get their own pass with a lesson balance
  2. For the users that have Passbook, they can have a lesson pass on their phone that our teachers can just scan to deduct the lessons. This would save quite some admin work
  3. Students can see how many lessons they still have left, and in future we could even offer students the opportunity to immediately top up their passes via Paypal  Again, this would be a nice time saver for admin work

To implement the above points in a way that would save me from doing all the manual admin work, I would have to integrate Passbook with our own LMS.

To integrate Passbook with the LMS, I made use of the PassKit API. I found their framework very easy to use, and the API is clearly documented and written.

Method

Here are the steps to follow:

Step 1:
Register for an account with PassKit to obtain an API key and secret.

Step 2:
Design a lesson pass template in the PassKit Pass Designer.

You might choose to use a membership pass style so every person could upload their own photo, but I chose to use an Event Ticket with a Blurred Background (because it just looked cooler) and I chose to  have 4 dynamic fields.  

  • Student name;
  • Issue/update date;
  • Expiry date;
  • Balance;

Make sure that you select these as dynamic but not something that the student can update themselves (there are check boxes in the Pass designer so it’s pretty easy to make the change).

Pass designer screenshot:

Step 3:
Connect with the PassKit API

I wrote a CakePHP component that uses the PassKit PHP class to connect with the API. You can download the PassKit PHP class for free from their API Wiki.

CakePHP component code (requires the PassKit PHP class to be in your Vendor directory):

<?php
App::uses('Component', 'Controller');
App::import('Vendor', 'PassKit', array('file' => 'Passkit/PassKit.php'));

class PasskitComponent extends Component {

// Passkit key
private $pk_key;
// Passkit secret
private $pk_secret;

public function __construct(ComponentCollection $collection, $settings = array())
{
if(isset($settings["pk_key"]))
{
$this->pk_key = $settings["pk_key"];
}
if(isset($settings["pk_secret"]))
{
$this->pk_secret = $settings["pk_secret"];
}
}

/**
* Returns pass details on succesful issue
*/
public function issuePass($pass_template, $pass_data) {
$pk = new PassKit($this->pk_key, $this->pk_secret, false);
$pass_details = $pk->issue_pass($pass_template, $pass_data);
return $pass_details;
}

/**
* Returns true on succesful update
*/
public function updatePass($pass_serial, $pass_template, $pass_data)
{
$pk = new PassKit($this->pk_key, $this->pk_secret, false);

// Check if valid pass
if(!$pk->set_pass_serial($pass_serial, $pass_template))
{
echo 'This is not a valid Pass ID.';
return;
}

// validate the pass with PassKit
if(!$pk->pass_validate()){
echo 'This pass is not valid for this PassKit account.';
return;
}

return $pk->pass_update($pass_data);
}

/**
* Get all pass information based upon pass id (which we get via custom URL)
*/
public function getPassDetails($pass_id)
{
$pk = new PassKit($this->pk_key, $this->pk_secret, false);

// Check if valid pass
if(!$pk->set_pass_id($pass_id))
{
echo 'This is not a valid Pass ID.';
return;
}

// validate the pass with PassKit
if(!$pk->pass_validate()){
echo 'This pass is not valid for this PassKit account.';
return;
}

// Get pass details and return
return $pk->get_pass_details();
}
}
?>

The component only supports the API calls that I needed when I was integrating Passbook with my system:

  • issuePass – Issues a new pass;
  • updatePass – Updates an existing pass;
  • getPassDetails – Returns the pass details for an existing pass;

To add the PassKitt Component into the CakePHP controller, I use the following in the controller:

public $components = array('Passkit' => array(
'pk_key' => ‘key’,
'pk_secret' => ‘secret’
));

Step 4:
Link the internal records with PassKit’s records.

So, every time a lesson pass is created in my internal system, it also creates the pass via the PassKit API, and stores the pass-id and pass-url in my internal database. See below code snippet for an example:

// Internal saving happens here (the CakePHP way).. You can replace this by
// any MySql that you use to save your internal records. Note that 
// $this->data contains data that comes from a web form.
$this->LessonPass->save($this->data);

// Now we prepare the data array as to be saved via PassKit’s API (note that
// the key’s in the array are my field names in the pass template:
$pass_data["Student name"] = $this->data[“student”];
$pass_data["Balance"] = $this->data["balance"];
$pass_data["Issue date"] = $this->data["issue_date"];
$pass_data["Expiry date"] = $this->data["expiry_date"];

// We want to embed an update URL in the bar-code, so that when one of my 
// teachers scans the pass it immediately gives them the correct update link
// that updates the pass via our internal Lesson Management System. %pid 
// will embed the pass id.
$pass_data["barcodeContent"] = "http://www.mysystem.com/update?p=%pid";

// Issue the pass
$pass_details = $this->Passkit->issuePass($pass_template, $pass_data);

// If successful we update our internal record with the pass serial
// and pass url
if(isset($pass_details->success) && $pass_details->success == 1)
{
$data[“passkit_serial”] = $pass_details->serial;
$data[“passkit_url”] = $pass_details->url;
$this->LessonPass->save($data);
}

// After issuing of the passkit we can display/send/sms the pass URL to the user.

Step 5:
After the pass has been created and the student installed the pass on their phone, deduct the lesson and save a record in our internal system by scanning the pass.

The update URL to update the pass has been embedded in the barcode, so that means that when a teacher scan’s the pass, it automatically forwards the request with pass-id to our internal system. The teacher is required to login to our internal system first before he is able to deduct anything from the pass.

The code to deduct a value from a lesson pass looks like this:

// $passid contains the pass-id that comes in via the GET request
// Lookup the pass via the API. If it’s a valid pass then $pass_details will be 
// set
$pass_details = $this->Passkit->getPassDetails($passId);

$lesson_pass = null; 
if($pass_details != null)
{
// Look up the pass in local DB, so we can match balance (make sure
// it’s legit). The local pass record has the pass serial and template.
// These two make a pass unique as well
$lessonPass = $this->LessonPass->find("first", array(
"recursive" => -1,
"conditions" => array(
"passkit_serial" => $pass_details["serial_number"],
"passkit_template" => $pass_details["template_name"],
"balance" => $pass_details["pass_data"]["Balance"]
 )
 ));

// If we can't find the pass, that means someone messed with the
// balance and things didnt go through our system, so exit
if($lessonPass == null)
{
throw new NotFoundException(__('Invalid lesson pass'));
}
}
else
{
 throw new NotFoundException(__('Invalid lesson pass'));
}
// If $lesson_pass != null that means the pass exists and is valid. So we can
// continue to deduct a lesson

// First book the lesson record in the local system (this will also deduct
// it from the local system
$data["LessonRecord"]["user_id"] = AuthComponent::user("id"); // Teacher $data["LessonRecord"]["lesson_date"] = date("Y-m-d"); $data["LessonRecord"]["lesson_pass_id"] = $lessonPass["LessonPass"]["id"];
$data["LessonRecord"]["balance"] = $lessonPass[“LessonPass”][“balance”] - 1;
$data["LessonRecord"]["remarks"] = "Booked via API. ";

$this->LessonRecord->save($data);

// Now book it via the PassKit API, so the student’s pass gets updated
$passData["Balance"] = $data["LessonRecord"]["balance"];
$result = $this->Passkit->updatePass(pass_details[“serial_number”], $passkit_details[“template_name”], $passData);

// Check if pass was updated OK
if($result === true)
{
echo "Passkit update OK.";
}

Results:
Watch this video to see:

  • How cool the lesson Pass is for the customer – I love the real time updates;
  • How easy and convenient it is for the tutor to simply scan the Pass and auto update the lesson balance – hoorah no more scrappy note books;
  • How the lesson management system is updated automatically and reduces the amount of administrative overhead for Rock Kong management

This lesson Pass is just being implemented as a pilot but we will come back in 1 month to update on the success.  Initial indications from students is they love it and want it now!  I would be interested to hear from anyone else that has implemented a similar lesson pass and please feel free to use my code in here to design and develop you own.

Rock Kong Lesson Pass

Rock on.
Rock Kong

Technorati Tags: , , , , , , , , , , , , , , ,

Happy New Year

All of us at PassKit would like to wish everyone a very healthy, happy and prosperous new year.

From the June 11, 2012 – the day that the PassKit concept and philosophy was born – we have been working tirelessly to bring you world class thought leadership, products and services, and provide the most intuitive and thorough Passbook Pass Designer and Pass Kit API out there. Our highly creative, passionate and expert developers have, and continue to work non-stop to deliver you world class tools so you can quickly and easily create Passbook Passes and integrate them into your business processes and systems. Our dedicated, committed client services team have been working through the night to provide you the confidence and capabilities to get the most out of this brand new form of mobile marketing media.

And the response has been phenomenal; you’ve told us that you have loved using our products and more importantly your customers have adored using your Passes. You’ve already attracted new custom just by the fact you got rid of the plastic or paper cards and now issue Passbook Passes.  In some cases the demand for passes has completely overtaken expectations, much to your delight. And it’s also music to our ears.  You are now well and truly leading at the forefront of the  mobile marketing revolution and we are confident that 2013 is the year this kicks into over-drive.

We have also received feedback from many individuals and companies that would love to get involved but aren’t too sure how to get started; and more specifically how it would fit in with their business. This feedback has really energised us even further.  So thank you to everyone who got in touch, and for helping us reinforce one of our core PassKit goals and strategies going forward.

One of our key missions in 2013, is to super-charge our supporting tools and processes. You will have access to world class expertise, tools, communities and best practices so you can confidently and effectively realize the potential of the mobile wallet with minimal effort.

We will freely share advice, ideas, tools, manuals, tips, examples each week and you will be able to discuss ideas, strategies and experiences with your fellow PassKit customers on our discussion forums.

2013 will be the year we see the Passbook initial cynicism turn to mass adoption. 2013 will be the year where PassKit enables more businesses than ever before to tap into this massive potential and 2013 will be the year where you leave your competition behind!

Here’s to a great 2013, the year when we will grow and prosper together.

Technorati Tags: , , , , , , , ,