Awesome Open Source
Awesome Open Source

First mobile E-commerce solution connected to Facebook Ads and Google

We as a Facebook Marketing Partner company have experienced neverending struggles with Facebook and Google integration on side of our partners. It usually took weeks or months to implement all neccessary SDKs, features, measurements and events. That's the reason why we have decided to provide an open-source solution bringing marketing on the first place. Our mission is to fulfill all potential of Facebook Ads, Google Analytics and other marketing channels for an extraordinary mobile shopping experience.

Visit out website on

Do you want to see the app in action?


  • Facebook Ads Integration - The most advanced Facebook Ads Integration. Encourage purchases, target your mobile customers and measure conversions.
  • Google Analytics Integration - Integration of Google Analytics can be sometimes tricky. With our solution you can't miss any conversion.
  • Unified & Powerful API - Connecting your backend and data storages has never been easier. Our API is, thanks to Apiary, very well documented and available for testing.
  • Push Notifications - Encourage your customers through absolutely powerful Push Notifications. So, your customers won't miss any sale or special offer.
  • Synchronized with your Web - Synchronize abandoned shopping carts and user profiles from your website. So, your customers won't feel the difference if coming to website or mobile app.
  • Standardized XML Feeds - We use support all advanced XML Feed features you know from other systems. So, you don't have to create another one and just connect the feed you already use.
  • We also offer Deeplinks, Advanced measurement & analytics, and much more...

How to connect

We are trying to minimize the effort necessary to ship your ecommerce mobile solution. The first step for a successful integration is connection between your data source and our server. There is prepared a standardized documentation which will tell you how to output your XML feed to be compatible with the data the app is expecting. For more information on how to connect to our server please contact us.


Technical Intro uses CocoaPods as a dependency manager for project. To run the project please follow these steps:


  • iOS 9.0+
  • Xcode 7.2+ for app development and distribution to Apple App Store

Workspace Setup

Run these commands in Terminal or other command line tool to download and instal all the necessary tools for the app development and distribution:

[sudo] gem install bundler
xcode-select --install

To download the project, install dependencies specified in the Podfile and open the project workspace run these commands one after another:

git clone
bundle install
bundle exec fastlane build

This will build the project and create a new workspace file OpenShop.xcworkspace which includes all the CocoaPod dependencies. Make sure to open OpenShop.xcworkspace workspace file for app development and submission and ignore OpenShop.xcodeproj.

Graphics template

Here you will find the PSD template which served as the guideline for implementing user interface in the OpenShop app.

Run the app

The example application you can download from this repository or App Store runs on our custom sample data source (product, payments, shipping, branches,...). If you want to integrate your feed within the app take a look at the section how to connect.

Release the app with minimal effort

Do you want to release the app like 1, 2, 3, BLAST OFF!? It is as easy as editing a few files and running a command from Terminal and you are done. We have prepared and configured fastlane tool to automate the process of creating the application on Apple App Store, taking screenshots and distributing the app for you.

Create new application on iTunes Connect

Open fastlane/Fastfile and find produce lane which specifies the basic information necessary for the creation. Enter your Apple Developer account username, choose a app_identifier, app_name and sku and run the following command which will produce a new app on you iTunes Connect.

bundle exec fastlane produce

Update OpenShop project

  1. Rename the project - Apple tutorial
  2. Update UI
    • colors - currently there are two sources where the UI components colors are defined - UIColor+BFColor.m and Main.storyboard
    • logos, icons - you will find all the image resources inside Images.xcassets file. Replace all the OpenShop logos and images with your custom ones
    • banners - upload custom banners which appear on the title page through the administration - sales, new collections
  3. Bundle ID - Select custom bundle ID which will uniquely identify your app. It must be same as the one specified in the previous step. For example: nameofyourcompany.openshop Bundle id change
  4. Define your organization - inside BFAppPreferences you will find BFAppPreferencesDefaultOrganization key which defines your organization ID. After the registration in our system we will assign you an identification which will be placed here.
  5. Create Facebook application - Facebook tutorial Facebook application settings
  6. Connect Facebook application the OpenShop project - enter Facebook application ID on these places:
    • Info.plist inside - notice that value inside URL Schemes is prefixed with string fb Info.plist
    • administration on our server
  7. Validate FB configuration: Thanks to the Facebook App Ads Helper you will be able to determine if all of the parts of the configuration were successful.


Taking screenshots for multiple resolutions on multiple devices can be pretty annoying that's why we have automated this process with snapshot and frameit tools. Running this command will run the simulators, take screenshots and put them in the frames.

bundle exec fastlane screenshots
  • UI behaviour is specified within OpenShopUITests.swift.
  • snapshot configuration is inside fastlane/Snapfile.
  • frameit configuration is inside fastlane/screenshots/Framefile.json.
    • texts which are places inside the frames are defined in the files keywords.strings and titles.strings. Each language folder (en-US) has its own set of strings files
    • It is important to mention that frameit uses images for Apple devices which must be downloaded and installed from their site. For more information please follow frameit docs.

Release the app

This command will do all the magic - build the app, take screenshots, frame them with the texts, check for provisioning profiles and deliver the app to the Apple App Store

bundle exec fastlane appstore

Next step is to send the application to Apple to review the application. Some extra features (e.g. Analytics tools) require IDFA collection so it is recommended to create custom licence which specifies that user agrees with this by downloading the application.

In addition to the terms set out in the standard Apple "Licensed Application End User Licence Agreement" users agree to the Application collecting detailed user information. A copy of the Apple standard EULA can be found at:

Before submitting the app to the review is is also necessary to complete the final form according to this picture to avoid the rejection.

Nice-to-have features

Implementing these features will significantly help you with getting to know the users, collecting the data about the app usage or remarketing but they aren't crutial for running the app.

  • Analytics - To measure conversions or application usage and installs from the campaigns you can use pre-implemented Google Analytics or Facebook Analytics inside BFAnalyticsLogger class. Each logger (e.g. BFAnalyticsGoogle, BFAnalyticsFacebook) defines its own way how to log the event and BFAnalyticsLogger serves as the proxy for them.

    • Google Analytics
      • The first step is to create Google Analytics account. Take a look here.
      • Set custom values obtained from Google Analytics site to trackerName and trackerUA inside BFAnalyticsGoogle class
    • Facebook Analytics - If you have successfully configured Facebook SDK you can start logging the events.
  • Apple Push Notification Service (APNS) - APNS provides you a feature to inform the customers about the newest collections and sales. We have created a tool in the administration for you to broadcast the notifications from one place with just a few clicks. At first it is necessary that you obtain APNS certificates. PEM is a great, easy to use command line tool which will generate the certificates for you. If you want to do it the hard way this tutorial by Ali Hafizji might help you. When you are done, just upload the certificates to our administration.

  • Fabric (Crashlytics) - As Rocky Balboa once said: "The world ain’t all sunshine and rainbows. It's about how hard you can get hit and keep moving forward.". And let's face it. Every app can get hit pretty hard and crash. But it's about how you can analyze the crash and fix it. That's the reason why we are using Crashlytics to analyze the bugs that made the application crash. Take a look at their Get started guide and when you are done there is BFCrashLoggerService in the project which will make the integration easier.


Now let's talk a bit more technically. If you wish to make more significant changes we are providing the basic description of the implementation on our wiki pages but you will find more in-depth comments inside the code.

Don't you have your mobile development team? We totally understand that pain, when your IT department is super busy or you don't have your own in-house mobile development team. We will connect you with one of our integration partners to build the app for you. Just contact us.


  • Travis CI builds
  • Unit Tests


Feel free to build your own mobile ecommerce solution on top of Send us the name of the application on [email protected] to get $500 advertisement credit on Facebook for free from Business Factory - one of the 50 official Facebook Marketing Partners worldwide.

Contact us

Do you have any troubles or issue to report? Do you like project and want to be part of it? Great! Contact us on [email protected] or here on GitHub.


MIT License

Copyright (c) 2016 Business Factory s.r.o.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
objective-c (10,615
template (397
ecommerce (174
mobile-app (93

Find Open Source By Browsing 7,000 Topics Across 59 Categories