Home
Blog
Authors
Dan Burcaw

Dan Burcaw is Co-Founder & CEO of Nami ML. He built a top mobile app development agency responsible for some of the most elite apps on the App Store and then found himself inside the mobile marketing industry after selling his last company to Oracle.

Latest articles by
Dan Burcaw
Written by
Dan Burcaw
9 Nov

Subscription Builder Dan Burcaw

Nami co-founder & CEO Dan Burcaw joins School for Startups Radio to talk serial entrepreneurship and Nami ML's work to help app developers start and grow mobile subscription businesses.

Nami co-founder & CEO Dan Burcaw joins School for Startups Radio, hosted by Jim Beach, to talk serial entrepreneurship and Nami ML's work to help app developers start and grow mobile subscription businesses.

Subscription Builder Dan Burcaw is a serial entrepreneur who has founded four companies each on the forefront of a major technology wave: open source software, the smartphone, cloud computing, and now machine learning. His newest venture, Nami ML, focuses on helping app developers start and grow mobile subscription businesses.

Listen on Apple Podcasts or visit the episode page.

 👉Code Story with Dan Burcaw, Nami ML

Written by
Dan Burcaw
9 Nov

The Nami Vintage Industry Swag Photo Contest!

Nami ML is celebrating our favorite tech conference, WWDC20, with a vintage industry swag contest. Read more to enter and win!

Updated June 21, 2020 11:30am PT to use #VintageSwagNamiML hashtag.

Normally during WWDC, the Co-Founders of Nami ML, Dan and Joe, host a wild and crazy party (some of which from years past are still legendary like the one with the marching band at Mezzanine or the one atop Union Square at Harry Denton's Starlight Room in SF, or of course that first one where we ruined the Tempest), but this year it has to be something different…

So to celebrate our favorite tech conference of the year, we’ve decided to run a little contest!

The contest is pretty simple and easy to participate in, but of course there are official rules from our lawyers.

For the official rules, see: https://www.namiml.com/legal/photo-contest-rules

So what is it and how do you win?

We want to see your best “Vintage Swag” from the computer industry. Really it could be almost anything tech related.

Got old computer gear? Conference or Promotional Swag (t-shirts, mugs, stickers, trinkets)? Heck even old floppy discs?

Then you’re in!

We’re doing Daily Prizes every day of the conference (6/22/2020 to 6/26/2020) and then a “Grand Prize” at the end.

Three of the daily prizes (M-W-F) we’ll choose based on the originality and quality of the photos you post.

Two of the daily prizes (Tu-Thu) are based on who gets the most reaction (retweets, likes, replies).

Whoever gets the most reaction during the week will win the Grand Prize!

All you have to do are 4 things:

  1. Post a picture on Twitter of your classic gear/swag
  2. Use the hashtag #VintageSwagNamiML
  3. Follow our Twitter account @HelloNamiML
  4. Include your favorite #hashtag being used for the conference this week.

Daily winners will receive a US$100.00 Apple Gift Card to use to buy your favorite indie apps (or music, or anything else they can be used for).

The Grand Prize winner will receive a pair of Apple AirPods Pro (worth US$249).

So, start digging through your garage goldmine (find that one piece you’ve been holding onto for years for just such an occasion), put on your favorite old conference t-shirt, or any other vintage swag or gear you want to show off.

Sadly, we’re only allowed to let legal residents of the United States participate (thanks a lot, lawyers), but even if you can’t enter you can still show off!

Impress your friends, gain internet fame, and win prizes!

Have a great week at WWDC!

Sincerely,

All Your Friends at Nami ML

👉Why We Decided to Create Nami

Written by
Dan Burcaw
9 Nov

Smaller Size, Improved ML & Debugging

The latest Nami Apple SDK release is smaller in size plus includes improved ML data collection & debugging

We've updated our Apple SDK with a host of improvements including a smaller build size and improvements to ML data collect and debugging.

The full list of improvements include:

  • Simplified method and parameter names, see https://docs.namiml.com/reference.
  • Added support for disabling auto-raise limits for triggered paywalls.
  • Stability fixes for more reliable presentation of paywalls for auto-raise cases.
  • Improved frequency limiting of paywalls by hour.
  • Improved debugging output for understanding paywall auto-raise choices.
  • Improved environment detection so server reporting of transactions can be given testing transactions.
  • Added canRaisePaywall method to determine if the SDK has enough data to raise a paywall.
  • Improvements to tracking of paywall impressions and transactions.
  • Stability fixes around calls for Nami session.
  • Improved support for React Native Bridge
  • Added fetchCustomPaywallMetaForDeveloperID() call to get paywall definitions for alternate paywalls.
  • Made presentNamiPaywall() public so that developers could make use of the internal Nami paywall through a custom paywall meta definition.
  • Xcode 11 now used for primary framework builds, Xcode 10.3 frameworks in Xcode10-3 folder.
  • Added environment to cart signals sent to Nami, so testing purchases can be checked with Nami.
  • Fixed issue found with ML data collection.
  • Fix consumable product consumption in SDK, so that purchases are not remembered.
  • Compiled framework to optimize for smaller build size.

You can head on over to our Apple SDK repository on GitHub to grab the latest bits: https://github.com/namiml/nami-apple

***

As always, we welcome your questions, comments, or requests via email.

Thanks for using Nami!

👉Announcing Our New Documentation Portal

Written by
Dan Burcaw
8 Nov

The Power of Micro-Interactions in Subscription UX: Small Touches, Big Impact

Boost your subscription business with the power of micro-interactions. Learn how to improve user experience, increase conversions, and reduce churn through thoughtful design.

A seamless user experience is the cornerstone of any subscription business. Fast load times and positive interactions drive conversions and retention, while poor UX can lead to churn. Every touchpoint matters.

One of the most effective—and often overlooked—ways to elevate the user experience is through micro-interactions. These are the subtle animations, feedback cues, and responsive design elements that make digital experiences more intuitive, engaging, and enjoyable.

Think of them as the digital equivalent of a smile or nod during a conversation—small gestures that let the user know they’re being heard, understood, and guided.

In subscription UX, micro-interactions are particularly impactful, providing immediate feedback or encouragement during actions like signing up, subscribing, or managing an account.

Unlike single-purchase products, subscriptions rely on a user’s long-term commitment and repeat interactions. With so much riding on the user’s experience, even minor friction points in the subscription journey—such as unclear paywall designs or unresponsive payment confirmations—can lead to abandoned carts or higher churn.

Micro-interactions help eliminate these barriers, making the user journey feel intuitive and fluid. When users experience subtle, positive interactions, they’re more likely to feel at ease, proceed confidently, and remain engaged over time.

In this post, we’ll explore how micro-interactions, despite their small size, can make a substantial difference in the subscription experience.

Breaking Down Micro-Interactions: What They Are and Why They Matter

Micro-interactions are the small, often subtle responses or animations in a digital interface that respond to user actions. These interactions provide visual or tactile feedback that enriches the overall user experience, making it more engaging and satisfying.

They’re everywhere—hover effects on buttons, loading spinners, toggles, and even animations that confirm an action has been taken. Each one serves a specific purpose: reassuring, guiding, or delighting users as they navigate through an app or website.

Feedback Cues:

Feedback cues are immediate, usually visual or auditory, signals that acknowledge a user’s action.

For example, when a user clicks a button and it changes color, vibrates slightly, or expands, it confirms that their input was received.

In subscription UX, feedback cues are essential, as they ensure users know their actions—whether submitting information, confirming a purchase, or adjusting account settings—have been recognized, reducing any uncertainty or hesitation.

Guiding Actions:

These micro-interactions gently steer users through a sequence or process, reducing friction in multi-step actions like completing a signup or navigating a paywall.

A great example is a progress bar or sliding animations that signal movement through steps, giving users a sense of progression and encouraging them to complete the process.

In subscription-based models, guiding actions are especially useful for onboarding flows, helping users understand how to get the most from their subscriptions.

Enhancing Affordances:

Affordance-enhancing micro-interactions subtly show users how certain features work or what actions are possible. These animations can highlight call-to-action (CTA) buttons or make swiping actions feel intuitive and accessible.

For instance, a pulsing animation on a “Subscribe Now” button can draw the user’s attention and subtly prompt them to click.

These elements often play an essential role in paywall interfaces, where users need clear, intuitive cues to proceed through the payment journey.

The Psychological Impact of Micro-Interactions on User Perception and Behavior

Building User Trust:

Micro-interactions play a pivotal role in establishing user trust, particularly during critical moments such as payment flows. When users are making financial commitments, they seek reassurance that their actions are secure and recognized.

Subtle feedback, such as visual confirmation that a payment has been processed or a gentle animation indicating a successful subscription, helps users feel in control of the situation. This immediate response fosters a sense of trust between the user and the platform, making them more likely to proceed without hesitation.

In subscription-based businesses, where trust is essential for long-term customer relationships, micro-interactions become a key strategy for instilling confidence.

Reducing User Anxiety:

In digital environments, uncertainty can breed anxiety, particularly during significant actions like subscribing or confirming payments. Micro-interactions address this by providing instant, clear responses to user actions.

For example, a reassuring message like “Your subscription is confirmed!” displayed alongside a subtle animation can ease a user's mind and eliminate doubts about whether their action was successful.

By reducing hesitation and reinforcing a sense of accomplishment, these micro-interactions help create a smoother experience, encouraging users to complete their subscription journeys without second-guessing themselves.

Boosting Engagement and Satisfaction:

Pleasant and delightful micro-interactions can transform routine tasks into memorable experiences.

For instance, the joyful burst of confetti or a cheerful icon appearing after a successful subscription can elicit positive emotions and make the user feel appreciated.

These small moments of delight enhance overall user satisfaction, encouraging users to associate positive feelings with the subscription process. In a competitive landscape, where user engagement is paramount, such memorable interactions can set a subscription service apart, making users more likely to return and recommend the service to others.

Reinforcing Brand Personality:

Micro-interactions are also a powerful tool for conveying a brand’s personality and tone. Whether playful, serious, or user-friendly, well-designed micro-interactions can communicate a brand’s identity effectively.

For example, a quirky animation during onboarding can enhance a playful brand persona, while a sleek, minimalist confirmation animation can reflect a more serious and professional image.

Tiny interactions, done right, can create huge emotional connections. By weaving your brand's personality into every touchpoint, you'll inspire trust and reduce customer churn. Ultimately, these interactions not only elevate the user experience but also solidify the brand’s presence in users’ minds, making them more likely to engage and subscribe.

Implementing Micro-Interactions in Subscription UX: Key Opportunities

Subscription Onboarding:

Onboarding is a critical phase in subscription services, as it sets the tone for the user's entire experience. A well-designed onboarding process can significantly increase user engagement and retention. By integrating micro-interactions, businesses can guide users through their first steps with ease and confidence.

For instance, animations that encourage users to complete their profile or select their preferences can make the process feel more engaging and less daunting. Simple progress indicators, such as a visual timeline or step completion checkmarks, provide users with a sense of accomplishment, motivating them to continue through the onboarding journey.

These micro-interactions not only enhance the onboarding experience but also lay the groundwork for a positive relationship with the brand.

Paywall Design:

The paywall represents a critical decision point in the subscription funnel where users decide whether to commit to a paid plan. Therefore, reducing friction during this stage is essential. Micro-interactions can make the paywall more inviting and less intimidating.

For example, subtle animations that draw attention to the benefits of subscribing—like a gentle pulse on the “Subscribe” button or a slide-in tooltip that highlights premium features—can help users see the value of committing. Playful visual effects, such as expanding buttons that emphasize key benefits, create a dynamic and engaging environment that encourages users to take the plunge.

Subscription services can foster a more persuasive and less obstructive conversion experience by utilizing micro-interactions in paywall design.

Payment Confirmation and Success Feedback:

After users make a purchase, it’s crucial that they feel confident about their decision and the security of their payment. Micro-interactions in this phase can reinforce positive feelings and enhance user satisfaction.

Celebratory animations, such as confetti bursts or cheerful icons appearing after a successful subscription, add an element of joy and achievement to the process. Additionally, clear “Thank You” messages that confirm the subscription status help alleviate any lingering doubts. Incorporating simple loading animations during the payment processing step also keeps users informed about what’s happening, reducing anxiety and improving transparency.

These thoughtful interactions help ensure that users leave the payment process feeling valued and assured, which is vital for customer retention.

Subscription Renewal Reminders and Alerts:

Proactive communication is key to improving user retention, and gentle reminders before a subscription renewal can prevent unpleasant surprises for users. Micro-interactions in this context can take the form of soft alerts that provide clarity and transparency about upcoming renewals.

For instance, subtle vibrations or pulsing icons on the app can nudge users to check their account status or upcoming renewal dates. A well-designed reminder, perhaps accompanied by a friendly message like, “Your subscription will renew soon—thanks for being with us!” can create a sense of community and appreciation.

By implementing these gentle nudges, businesses can foster a proactive relationship with users, enhancing their experience and increasing the likelihood of continued subscriptions.

Best Practices for Effective Micro-Interactions in Subscription UX

Consistency Across the Journey:

One of the foundational principles for implementing micro-interactions is to ensure consistency throughout the entire subscription journey. From onboarding to renewal reminders, every micro-interaction should maintain a similar visual style, tone, and functionality. This cohesive experience not only strengthens brand identity but also makes the interface more intuitive for users.

When micro-interactions feel uniform, users can easily recognize patterns and understand how to interact with the interface.

For instance, if a subtle animation is used to confirm successful profile completion during onboarding, a similar animation should be employed for confirming payments or renewals, fostering familiarity and comfort.

Balance Function with Delight:

While micro-interactions can add an element of joy and engagement, it’s crucial to balance this delight with functionality. The purpose of these interactions should enhance the user experience rather than distract from it.

Animations should be smooth and purposeful, contributing to clarity and ease of use without overwhelming users with excessive or overly intricate effects.

For example, a brief, pleasant hover effect on a button can make the interaction enjoyable, while lengthy or complex animations may delay users from completing their desired actions. Keeping micro-interactions functional yet delightful is essential for maintaining user focus and satisfaction.

Focus on Clarity and Transparency:

Clarity and transparency are vital components, particularly in critical moments like paywalls and payment processing. Users need to understand what is happening at each stage of their subscription journey.

Clear feedback mechanisms, such as progress indicators or confirmations, help build user confidence.

For instance, displaying a progress bar during payment processing not only informs users that their action is being completed but also minimizes uncertainty and anxiety. Providing transparent information about what to expect next reinforces trust and encourages users to proceed confidently through the subscription process.

Prioritize Speed and Smooth Transitions:

The effectiveness of micro-interactions greatly depends on their speed and fluidity. Animations must be optimized for quickness and smooth transitions to maintain a seamless user experience, especially on mobile devices where responsiveness is paramount.

Slow or lagging animations can frustrate users, potentially leading to drop-offs.

Ensuring that micro-interactions are snappy enhances the overall feel of the application, making interactions feel immediate and satisfying. Users should feel that their actions lead to instantaneous responses, creating a more engaging and dynamic experience.

Test and Iterate:

Lastly, the best way to refine micro-interactions is through ongoing testing and iteration.

Regularly assess how users respond to various micro-interactions, gathering quantitative and qualitative data to inform adjustments. This feedback loop allows businesses to identify which interactions resonate well with users and which may need refinement.

For instance, A/B testing different paywall animations can reveal user preferences, helping optimize the design for better engagement and conversion rates.

By continuously testing and iterating on micro-interactions, subscription services can adapt to user needs and preferences, ultimately enhancing the user experience and driving subscription growth.

Small Touches, Big Impact—The Lasting Value of Micro-Interactions in Subscription UX

Micro-interactions, though often subtle, play a crucial role in shaping the user experience within subscription services. By providing immediate feedback, guiding users smoothly, and reinforcing brand identity, these design elements enhance user engagement and satisfaction.

For subscription businesses, the impact of micro-interactions cannot be overstated. They directly influence user satisfaction, brand loyalty, and conversion rates. As users increasingly demand seamless and enjoyable experiences, businesses that prioritize thoughtful micro-interactions gain a competitive advantage.

We encourage you to evaluate your current subscription UX critically. Look for opportunities where micro-interactions could be integrated to add value—whether it’s in paywalls, onboarding, or payment confirmations. Solutions like Nami ML can support your efforts to implement these powerful micro-interactions into your subscription experience, especially if you want to create powerful paywalls that have the power to convert users across devices.

In a highly competitive subscription landscape, these "small touches" can be the major differentiator that sets a service apart from its competitors. By investing in micro-interactions, you’re not just enhancing the user experience; you’re cultivating a community of satisfied users who are more likely to stick around, advocate for your brand, and contribute to your growth.

Written by
Dan Burcaw
8 Nov

SKErrorDomain Code=3 on Apple App Store

Error Code 3, also known as SKErrorDomain Code=3 - Payment Invalid, is an Apple App Store error indicating issues with payment information. This error typically appears when users attempt an in-app purchase with an invalid payment method, often due to outdated card details, or restrictions on the test account in sandbox environments. Ensuring proper setup and payment validation is crucial for a smooth purchase experience.

What Causes SKErrorDomain Code=3?

Error Code 3 is typically caused by issues with payment validation. This includes using an expired card, a restricted payment method, or incorrect setup in sandbox testing. The error also arises if the Apple ID used does not have a verified payment method, resulting in the App Store rejecting the transaction.

Common Scenarios for SKErrorDomain Code=3 - Payment Invalid

This error is commonly encountered in the following situations:

  1. Using Invalid or Expired Payment Methods: The error appears if the user’s credit card has expired or if the payment method is invalid.
  2. Testing Purchases with Incomplete Sandbox Setup: When using sandbox accounts, this error may occur if the payment profile is not configured properly.
  3. Attempting Purchases on Restricted Accounts: Apple accounts with purchase restrictions or parental controls may trigger this error.
  4. Incorrect Apple ID Setup: Attempting purchases on Apple IDs that lack verified payment methods can cause this error in both production and testing environments.

Step-by-Step Solutions for SKErrorDomain Code=3

Solution 1: Verify Payment Method in Apple ID Settings

  • Purpose: Ensures that the Apple ID used has a valid and updated payment method.
  • Steps:
  1. Go to Settings > [User’s Apple ID] > Payment & Shipping.
  2. Verify that the payment method is active and up-to-date.
  3. If necessary, update the payment method to a valid credit card or payment option.
  • Result: Ensuring valid payment details reduces the likelihood of payment-related rejections.

Solution 2: Test with a Valid Sandbox Account

  • Purpose: Ensures that test purchases are conducted on a properly configured sandbox account.
  • Steps:
  1. Log out of the current Apple ID and log in with a sandbox test account.
  2. Ensure that the test account is active and has valid payment settings.
  3. Retry the in-app purchase to confirm proper setup.
  • Result: Testing with a sandbox account configured for purchases eliminates payment validation errors during testing.

Solution 3: Confirm Payment Settings in App Store Connect

  • Purpose: Checks that payment settings in App Store Connect align with the app’s in-app purchase setup.
  • Steps:
  1. In App Store Connect, go to In-App Purchases and verify each purchase’s configuration.
  2. Make sure product IDs and subscription options are correctly listed and configured.
  1. Result: Proper setup in App Store Connect reduces potential errors due to mismatches between the app and App Store configurations.

Solution 4: Advise Users to Check Parental Control Settings (for Restricted Accounts)

  • Purpose: Ensures users understand how restrictions can affect in-app purchases.
  • Steps:
  1. Ask users to go to Settings > Screen Time > Content & Privacy Restrictions.
  2. Instruct them to verify that purchases are allowed under iTunes & App Store Purchases.
  3. Retry the purchase if restrictions were lifted.
  • Result: Ensuring no purchase restrictions are enabled allows transactions to proceed smoothly.

Solution 5: Reattempt the Purchase on a Different Device or Network

  • Purpose: Avoids issues due to device-specific or network-related restrictions.
  • Steps:
  1. Test the in-app purchase flow on a different device or network.
  2. Retry the purchase process to confirm if the issue persists.
  • Result: Testing on a different setup can reveal device-specific problems and confirm if the error is isolated.

Conclusion

Error Code 3 - Payment Invalid, typically arises from issues with payment methods or account restrictions. By verifying Apple ID payment methods, testing with sandbox accounts, confirming payment settings, checking parental controls, and reattempting on different devices, developers can resolve this error and facilitate a seamless purchase process.

With Nami’s low-code solutions, you can skip the hassle of managing in-app payment validation, allowing Nami to handle your app’s purchases with ease. Discover more at NamiML.

Written by
Dan Burcaw
8 Nov

In-App Purchases & Subscriptions at Google I/O 2022

Google Play Billing Library v5, subscription offers, LiveOps events, prepaid subscriptions & everything you need to know about IAPs and from Google I/O.

Google I/O 2022 wrapped up this week and we've got you covered on the key announcements relating to monetization on Google Play:

  • Subscription Offers
  • Custom Store Listings
  • LiveOps Events
  • Play Billing 5.0

🔥 Subscription Offers

Perhaps the most exciting announcement is the introduction of Subscription Offers.  App publishers no longer have to create different subscription products for each  promotional or test variation.

Now, each of your subscription products have a base plan which represents your standard pricing.  Then, you can create offers for your subscription products with different eligibility rules:

New customer acquisition

The offer is for users who have either never had this subscription or any of your subscriptions.

Upgrade

The offer is for users who currently have a specific subscription. For instance, this is for cross-grading to a longer bill term or upgrading to a different tier of service.

Developer

The offer type allows you to determine a user's eligibility. Google suggests using this for use cases like a second-chance free trial or a winback offer.

Subscription Offers can also be limited to certain countries or regions and support up to 2 pricing phases.

Subscriptions with base plans and offers

👉Read more: Set Up IAP Google Play Android App

🏪 Custom Store Listings

Custom store listings have been a useful way to target users with an alternative store list by country or region. This year, there are three major changes to custom store listings:

Deep links

Now users can reach your custom store listing through a deep link. This is a powerful way to tie these variations to other marketing campaigns.

10X more custom store listings

Deep links will make custom store listings much more valuable. So, you can now have up to 50 custom listings.

Store listing experiments

Your store listing A/B tests now offer fine grain control such as setting a confidence level. Play also gives you estimates for when your experiment will complete or flag when your experiment has been running too long.

Custom store listing now with deep links

🎟 LiveOps Events

Similar to the App Store's in-app events, LiveOps now includes an Events feature. Events are surfaced throughout the Play Store giving you more exposure.

Offers

Now, LiveOps events can now have offers attached such as a discount or special Subscription Trials.

Deep Links

LiveOps events can now deep link to shorten the path to the related content in your app, improving conversion.

Reports

Now you can view reports for all your events. Measure conversion rate by different outcomes such as acquisition, open, or update.

While LiveOps is still in beta, Google is expanding access. If you're interested, you can express interest at: g.co/play/LiveOpsbeta

LiveOps offers

🤖 Play Billing 5.0

Google has released new client and server APIs with the release of Play Billing Library 5.0. This release rolls out some of the features announced last year, Subscription Offers, and some other nice improvements including:

In-App Messaging

Users at risk for involuntary churn due to a declined payment can now receive an in-app message from Play promoting them to correct their payment method.

Prepaid Subscriptions

In markets where pay-as-you-go is standard, Play Billing now supports prepaid subscriptions. Prepaid subscriptions can be extended through a top-up by the user. In Google's early tests, this can result in 2X better subscription recovery rates.

Nami SDK for Android

As always, Nami helps you adopt the latest from Google without worrying about the implementation details. Our current stable Android SDK supports Play Billing 4.0, which will continue to operate until May 2024. We plan to roll out an SDK update with support for Play Billing 5.0 in the second half of this year.

👉Read more: Play Billing Response Code: Item Unavailable

Final Thoughts

Google I/O 2022 brought a lot great new monetization announcements for app publishers. From Subscription Offers, to Custom Store Listings with Deep Links, Play apps have never had such a robust solution for commerce.  

Combining Google’s latest with Nami’s entitlement engine, native paywall manager, and paywall A/B testing, it’s never been easier to grow and optimize your app revenue. If you’re interested in giving Nami a spin for your own app, you can create a free account here.


       

       if(window.strchfSettings === undefined) window.strchfSettings = {};
   window.strchfSettings.stats = {url: "https://nami.storychief.io/en/in-app-purchases-google-io-2022?id=1722159463&type=26",title: "In-App Purchases & Subscriptions at Google I/O 2022",id: "51b60849-ff21-4408-b48f-9543da3cae59"};
           (function(d, s, id) {
     var js, sjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {window.strchf.update(); return;}
     js = d.createElement(s); js.id = id;
     js.src = "https://d37oebn0w9ir6a.cloudfront.net/scripts/v0/strchf.js";
     js.async = true;
     sjs.parentNode.insertBefore(js, sjs);
   }(document, 'script', 'storychief-jssdk'))