Whether you’re an experienced Independent Software Vendor (ISV) or just exploring the idea of creating a Salesforce app, launching an app on the Salesforce AppExchange is a major milestone. The AppExchange is Salesforce’s “App Store”, which gives your app a little bit of credibility – but getting started here isn’t the most straightforward.
In this post, I’ll share lessons from my journey, including tips, pitfalls, and resources to help turn your idea into a successful AppExchange listing. Let’s say you have your idea, and maybe even have started to build it out. How do you go from Idea to AppExchange?
Become a Salesforce Partner
Before you can list your app on the AppExchange, you’ll need to become a Salesforce Partner. This process involves registering with the Salesforce Partner Program and meeting certain requirements, such as establishing a business entity. Having a business entity is essential not only for compliance but also for managing contracts, payments, and customer relationships effectively.
Benefits of becoming a Salesforce Partner:
- Access to Salesforce development tools and training.
- Community support for troubleshooting and best practices.
- Eligibility to list your app on the AppExchange.
I used Stripe Atlas to create a Limited Liability Corporation (LLC). I found Atlas to be amazing, as it handled creating a bunch of key business formation documents, handled registering with governments, and provided awesome discounts for services like payment processing with Stripe (one year, no-fees) and more.
Once you are ready, you can begin the process of becoming a partner. Head over to the Salesforce AppExchange partner page and begin!
You will want to have a Salesforce Instance that is tied to your Partner status, commonly called a Partner Business Org (or PBO). For me, this PBO is the only production instance where I manage everything related to my small business.
Create Your Listing
Your AppExchange listing is a crucial part of the install journey, often the final step before users decide to install your app. To build that credibility, ensure it includes:
- Compelling Messaging: Highlight your app’s unique features and value proposition.
- Engaging Visuals: Add screenshots or demo videos that clearly showcase your app’s functionality.
- Professional Presentation: Use concise descriptions and polished formatting to leave a lasting impression.
Note: There are a few good authors out there who provide a ton of guidance – my favorite is The AppExchange Whisperer.
Demo videos are a powerful way to showcase your app’s features and value. A good video not only demonstrates functionality but also helps potential customers visualize how your app can solve their problems. Here are some tools and tips to create professional demo videos:
- Screen Recording: Capture your app in action, and make sure to capture it in HD quality. It’s simple and effective for highlighting specific workflows and features. Practice it a few times, being deliberate with all mouse movements.
- Video Editing: Cyberlink PowerDirector is a cost-effective tool for refining your footage and adding polish. Trim any processing delays, accidental mouse movements, or typing long bits of text.
- Voiceover: I’ve had great results using ElevenLabs for creating high-quality voiceovers that sound natural and engaging. Create sentence-long sound clips so that you can position them just right in your video.
- Intro/Outro Clips: For a professional touch, consider adding branded intros and outros. Platforms like Fiverr can help you find talented freelancers to create these assets.
Investing in a high-quality demo video can significantly enhance your AppExchange listing, making it more appealing and informative for potential users. This demo video highlights what can be created despite having no actual training in making them.
Collect Payments With AppExchange Checkout
AppExchange Checkout is Salesforce’s built-in solution for managing transactions on the AppExchange. It handles payments, subscriptions, and licensing for your app, allowing you to focus on development and customer engagement. Checkout requires you as a business to use Stripe for collecting payments – which, on paper, is great – but ISVs often encounter challenges when trying to integrate checkout data with their existing CRM and marketing workflows.
For ISVs just getting started, with a simple per-org or per-user pricing model, checkout fills the need nicely and helps us work through the data challenges.
Address Data Challenges
There are three different sources for data coming into your PBO:
- AppExchange Leads: The listing can use web-to-lead when someone performs one of four actions:
- Watching a demo video
- Taking a test drive
- Signing up for a free trial
- Installing the app
- License Installs: Whenever the application is installed into an org, you will get a license record and a lead record. These are created by a system process using a user that you can’t really work with.
- Checkout Subscriptions: This data largely comes from Stripe and covers the Subscription, invoice, and transaction details.
Within and across these sources of data, you will end up with duplicated data (multiple lead records as licenses are installed with a sandbox refresh), and records often exist in isolation, making it difficult to tie them back to related objects in Sales Cloud – such as accounts, opportunities, and campaigns. This lack of integration can hinder a clear view of the customer journey and complicate reporting.
Tackling the Challenge
We need to use our Salesforce administrative automation skills carefully to maintain clean data – it’s important to avoid disrupting the “black box” processes that Salesforce uses to push data into our org.
I use Platform Events (which can even be created by the weird user above), and then handle the event in a Flow. Because the event is handled asynchronously, any errors in my automation will not affect the initial data population.
In my PBO, I created 2 platform events:
- LMA Record Created (when the License Management App creates records)
- CMA Record Created (when the Checkout Management App creates records)
Both have a field for ObjectName and RecordId, and a Flow for handling the event. Within the Flow, I can retrieve related records and do any processing I like.
For example, when a new Lead is created I can search for a Matching Contact and auto-convert the Lead to remove this duplicate.

Another example is when a customer’s subscription renews. In this case, I would want to update an Opportunity Amount to add the new transaction amount to allow Campaign Influence reporting to connect the revenue to the Campaign.

Marketers out there may ask: How do Campaigns tie into all this? While it is nice that the AppExchange can be told which Campaigns to use when it creates a Lead, sometimes you have other marketing efforts driving traffic to the Listing.
The AppExchange can pass UTM parameters from your Listing URL into the Lead, however the data is passed in a JSON format within the description field. I’ve created a couple of Flow Actions that can help parse this data, which you can use in a Flow to find a Campaign with matching UTMs.

Final Thoughts
Launching an app on the Salesforce AppExchange can be a complex journey, but with the right steps and resources, you can set yourself up for success. Make sure to leave your thoughts in the comments below!
Comments: