We set out to empower web professionals with an e-commerce platform that would work with them and their existing tools, rather than try to make them fit into our box. Because of this, FoxyCart isn't turn-key and intentionally doesn't do a lot of things. That said, it's important that the average web professional not go reinventing the wheel to integrate FoxyCart into their CMS of choice, so we appreciate any third-party integration bringing FoxyCart support to a new user group.
In order to make third-party integrations as successful as possible, while simultaneously striving for user satisfaction and transparency of expectations, we have created the following guidelines for third-party integration developers.
Please give this page a read if you're already supporting, or are considering releasing and supporting, anything that uses FoxyCart to power e-commerce with another system you intend to release to the public. We'd rather set clear expectations up front than have you spend months building something only to learn that our company's culture is fundamentally incompatible with yours.
We value all feedback we receive from our users, but we especially value feedback from our integration partners. We will do everything we can to clearly communicate our current and future plans with you, and we appreciate you keeping us in the loop as well. If you have a big new release or feature coming, let us know! We'll blog about it or otherwise promote it if we are able.
Similarly, if you have constructive criticism, tell us. We're generally very blunt on our end, so you don't have to sugarcoat your words. We try not to assume that all our developer partners appreciate that same level of frankness, but if we see an area that could be improved in your product, service, or business process please don't be offended if we bring it up.
Our goal here is to help make your life as easy as possible with your integration. If you're running into a problem, let us know. If you think something could be done better, we'd love to hear. The odds are good that we have it on our roadmap already, or that we can help you improve your approach to avoid a particular problem. We don't want to tell you what to do, but we do want to be as available as possible for any questions you have.
Let's take a make believe CMS named FooCMS. The natural inclination is to name an integration something like Foo+FoxyCart or FoxyFoo or something like that that actually uses “FoxyCart”, “Foxy”, or a derivative of the FoxyCart name.
This presents at least two causes for concern:
However, disallowing the use of our trademark and discouraging the use of “Foxy” or homonyms presents very real problems as well:
We've worked very hard building our brand and our reputation, so we take it very seriously. At the same time, we really want to help anybody building a 3rd party integration to succeed (and profit, via our developer affiliate program).
To address the concerns above in a way that we believe is a win-win for everybody, we have some restrictions and requirements for integrations built with FoxyCart support. We believe that these guidelines will help your integration take advantage of our brand while minimizing potential confusion for users.
There are two separate scenarios when discussing an integration:
For exclusive integrations, the use of the following is acceptable with approval from FoxyCart and provided that the integration remains exclusive.
For example, if an integration is named “FooCMS + FoxyCart”, it cannot function without a valid FoxyCart store account (such as if it could use PayPal Standard or Google Checkout without FoxyCart).
It is important to note that if “FoxyCart” is used in an integration name it cannot be trademarked, as “FoxyCart” is a registered trademark of FoxyCart.com LLC.
For non-exclusive integrations, the use of “FoxyCart” or any of the above bullet points is not allowed, as it will very likely confuse users of both your system and ours. Non-exclusive integrations can use the FoxyCart name in listing supported systems, but cannot use the FoxyCart name in the name of the integration itself.
If the integration has separate modules or other elements through which the FoxyCart support is added, they must be clearly labeled as “FoxyCart” (and not any abbreviations or other modifications). For example, if “ProductFoo” has a module to add FoxyCart support, it should be called “FoxyCart for ProductFoo”, and not “FoxyFoo”.
For both exclusive and non-exclusive integrations we require the following (unless an exception is approved):
http://www.foxycart.com/Please get in touch if you have any questions about this.
We at FoxyCart strive to go above and beyond in our customer service. Our primary goal is to serve our users, as we believe that that is the best way to develop fanatical users that will reciprocate by providing honest feedback and criticism, as well as tell their colleagues about FoxyCart. This word of mouth is how FoxyCart has grown, and as such we are very protective over our reputation and brand.
We expect all third-party developer partners to adhere to a basic level of customer service guidelines:
Again, if we're in bed together, it's critical to us that you treat your users well. We strive to go above and beyond with our users, and we will wholeheartedly recommend a service that we hear good things about.
The flipside is that we will not recommend a service that we hear bad things about, even if it goes against our financial self-interest to do so. We'd rather turn a user away before they get started than risk having upset and vocal users talking about their bad experience.
FoxyCart is, by design, only a piece of any full e-commerce site build. This allows us to focus on what we do best while allowing you to use the tools you prefer. This also leads to many people reinventing the wheel to suit their own particular purposes. Because FoxyCart was designed from the ground up to be integrated with 3rd party systems, there is a strong possibility that somebody else is working on a FoxyCart integration with your CMS of choice, and we have already seen two separate web development teams settle on the same name for their integrations.
Because of this potential for conflict, and because we were built to integrate in the first place, we at FoxyCart do not make exclusive arrangements. Any developer is free to create an integration using FoxyCart's publicly available services.
Similarly, we at FoxyCart will recommend multiple options to our users based on what they ask for and what we understand about the available integrations. We also often recommend alternatives to FoxyCart entirely if the user is asking for things that FoxyCart just isn't suited for (like a complete turnkey solution, a multi-currency store, etc.). This is nothing personal; rather, it's an effort to always provide potential users with the most honest and helpful response we can, even if this means the user isn't right for FoxyCart at the end of the day.
If you believe that exclusivity is required for your business model please get in touch with us to discuss it. There may be other options worth discussing (such as whitelabeling and volume pricing, which is in our plans for a future release), and we want to fully understand your needs.
As we continue to innovate and upgrade FoxyCart, your integration will need to be updated to take advantage of those new features. While synchronizing development schedules is likely impossible, we will try to alert all of our integration partners about new features and functionality before they are officially launched. We also try to provide early beta access to new versions prior to release (and sometimes prior to public beta), and generally will keep a release in beta for at least a month to allow for your testing and feedback.
Your integration should wherever possible use FoxyCart-native functionality rather than creating similar functionality independent of FoxyCart. For example, since FoxyCart supports functionality like quantity discounts, coupon codes, HMAC price validation, UPS/FedEx/USPS live shipping rates, 3dsecure, PayPal Express Checkout, product thumbnail images in the cart, downloadable products, extensible JSONP callbacks, and etc., your integration should utilize the native FoxyCart functionality rather than creating your own.
This will prevent confusion stemming from two different (possibly conflicting or feature-incompatible) ways to accomplish the same goal, and will allow you to use the FoxyCart documentation in your own documentation if necessary.
If you have a compelling need to not use FoxyCart's native functionality, please discuss your requirements with us so we can understand the limitations and work together on a more flexible solution.
We know that this is a long and heavy document, but our goal is to make sure all the issues are discussed up front. Again, our goal is to have as clear and constant communication with you as possible to ensure success for your integration. If you have any questions at all please don't hesitate to get in touch with us. We're here to help, and we are excited about every advanced integration that comes through our inboxes.
We want to be friends, and we want to learn from your approach while helping you meet the needs of your own users.
Thanks. Brett and Luke Co-Founders, FoxyCart.com