Forum
    • Categories
    • Register
    • Login
    1. Home
    2. soundsync
    • Profile
    • Following 1
    • Followers 1
    • Topics 110
    • Posts 692
    • Groups 0

    soundsync

    @soundsync

    111
    Reputation
    130
    Profile views
    692
    Posts
    1
    Followers
    1
    Following
    Joined
    Last Online
    Age 36
    Location Michigan

    soundsync Unfollow Follow

    Best posts made by soundsync

    • RE: AU Compiles but not visible

      @d-healey You were right, it was the bundle identifier.

      posted in General Questions
      soundsyncS
      soundsync
    • RE: Soundsync: HISE Ecosystem | UPDATE: WE ARE LIVE!

      Hey Gang,

      Quick update on SoundSync & the HISE integration I've been working on.

      SoundSync is now LIVE!

      This means you have two integration paths available from the developer dashboard:

      1. HISE Script Package
      This is the simpler drop-in version for developers who want the fastest setup inside a regular HISE project.

      The include is intentionally simple:

      include("SoundSync/Runtime/SoundSyncRuntime.js");
      

      This package handles the branded activation UI, login activation, serial activation, machine validation, deactivation, Store, My Products, and customer product access using HISE Script + WebView.

      2. Native C++ HISE Package
      This version is for developers who are comfortable building HISE from source. It moves the more sensitive licensing/runtime layer into native C++ and keeps the HISE Script side as small as possible.

      The HISE Script side is only a lightweight gate:

      include("SoundSync/Scripts/SoundSyncNativeGate.js");
      ssSoundSyncNativeGateStart();
      

      The Native package includes the C++ source, HISE source patch/tools, setup instructions, and the same product/developer branding flow as the HISE Script package.

      The goal with the C++ version is to make the licensing layer harder to inspect or tamper with than a script-only package, while still keeping the HISE-side integration simple.

      Current package features include:

      • Activation by customer login or serial + email
      • Product-specific machine activation, validation, and deactivation
      • Server-side activation counts and serial status updates
      • Offline grace period and cached local license state
      • Branded activation UI with developer logo, product image, Brand Manager colors, and light/dark logo background handling
      • In-plugin Store with catalog browsing and single product pages
      • My Products panel with current product serial, activation info, copy serial, deactivate this machine, and owned-product access
      • Branded storefront/account link handoff with SoundSync fallback links
      • Test Connection flow for checking package/API setup
      • Product-scoped generated config for each developer/product
      • HISE Script package and Native C++ source-build package options

      Both versions are generated from the SoundSync developer dashboard and are product-scoped, so developers can export a package with their own product info, branding, activation settings, storefront links, customer product access, and machine/license behavior already configured. They both include simple instructions for integration as well.

      The HISE Script version is the fastest route for most developers.
      The Native C++ version is the better option if you are already maintaining a custom HISE source build and want a stronger licensing boundary.

      SoundSync for HISE is live now, and both package options are available from the developer product dashboard.

      If you are building commercial HISE instruments or effects, you can now generate a product-scoped HISE package with activation, validation, Store, My Products, branding, and customer access already wired in.

      JUCE packages are also offered for direct JUCE connection.

      Feedback from the HISE community is always welcome as we keep improving the developer & customer experience.

      Learn More About Soundsync

      Best,

      Aaron

      posted in General Questions
      soundsyncS
      soundsync
    • Soundsync: HISE Ecosystem | UPDATE: WE ARE LIVE!

      Hey Gang,

      I wanted to start a cleaner updated thread for SoundSync and keep this one focused specifically on the HISE ecosystem/workflow we’ve been building around it.

      SoundSync started as a platform to help audio/plugin developers handle the pieces around releasing a product: licensing, customer accounts, serial activation, product delivery, storefronts, checkout, and customer libraries.

      The HISE side has now grown into a much bigger part of the platform, so I want to use this thread to share walkthroughs, updates, screenshots, and short examples of how the HISE workflow is coming together.

      The goal is not to replace anything inside HISE.

      The goal is to help with everything around releasing, selling, activating, supporting, and managing a HISE-built product.

      Some of the HISE-focused pieces currently being tested or polished:

      Product setup and delivery files
      Storefront and checkout testing
      Customer library / download access
      Serial generation and activation
      Plugin-side validation
      Offline grace handling
      Suspend / deactivate / reactivate flows
      Reseller, imported, and unassigned serial activation workflows
      Branded activation UI
      WebView-based in-plugin storefront
      “My Products” customer view inside the plugin
      Developer support links/pages
      Customer/product ownership checks
      Basic customer and purchase management

      Right now the platform is still in test/beta mode. Stripe checkout is in test mode, so no real payments are processed.

      For checkout testing, Stripe’s test card is:

      4242 4242 4242 4242

      Any future expiration date and any CVC should work.

      What I’m mainly looking for from HISE developers:

      Does the setup flow make sense?
      Is the HISE package/drop-in workflow clear enough?
      Does the activation/licensing flow feel reliable?
      Does the WebView storefront/customer area feel useful inside a plugin?
      Are the customer/product/storefront tools helpful or too much?
      What would make this safer, clearer, or easier before real launch?
      What support/docs/walkthroughs would make the HISE side easier to trust?

      This is still not meant to be a polished public launch thread. I’m mostly looking for a few HISE developers willing to test the workflow, create a demo product, run a fake checkout, generate/activate a serial, and give blunt feedback.

      If you’re actively building or selling HISE plugins and want to test it, you can sign up here: https://soundsyncsolutions.biz/developer

      You can also schedule a meeting with me here for any questions, walk-throughs, etc: https://www.soundsyncsolutions.biz/demo

      I’ll keep posting HISE-specific walkthroughs and updates in this thread as the package gets cleaned up.

      Best,
      Aaron

      posted in General Questions serial protection beta
      soundsyncS
      soundsync
    • RE: Taking my Mailing list seriously, so a first question....

      @Lindon My subscriber list for my Plugins are roughly the same as yours (around 18k). Ill be as open and honest about what Ive done, results, etc since beginning my current plugin company 1 year ago.

      My main focus for marketing is collecting emails. I do this in various channels (resellers, free giveaways, exclusive blog discounts, affiliates, etc).

      Whenever I have a new release, my email subscribers get it first. Whenever I have a deal/bundle/sale, my email subscribers hear about it first and/or get a special/addional discount.

      Any purchase recieves a thank you along with he downloads.

      Some amount of time later, usually 5-7 days, i automate an email checking in on how they like the product and if they would leave a review. Leaving a review gets you a small discount/gift card to be used in the store.

      As far as campaigns, it depends on what Im aiming for. A new release will get "hype" emails, 1-2/week, for a couple weeks. Then the actual launch and deal will recive 2 emails/week. The final 48 hours receive 2 emails as well for urgency purposes.

      Bundles, deals and sale may get a similar treatment just less "hype".

      My audience is pretty used to my email format and layout. Im usually pretty straight to the point with a bit of sarcasm. I think being yourself and not bullshitting is pretty important.

      I typically can make $2000-$4000 from my email list each release/deal. These deals are usually 2 week periods.

      Hopefully something in this ramble while im rocking my daughter to sleep s helpful.

      posted in General Questions
      soundsyncS
      soundsync
    • RE: Apple altool vs notarytool

      For anyone doing it it manually, here is the code.

      Thanks @d-healey as always!

      Codesigning Plugin
      codesign --remove-signature "MacHD/User/Desktop/PluginName.vst3"
      codesign --remove-signature "MacHD/User/Desktop/PluginName.component"
      codesign -s "Developer ID Application: YOURTEAMID" "MacHD/User/Desktop/PluginName.vst3" --timestamp
      codesign -s "Developer ID Application: YOURTEAMID" "MacHD/User/Desktop/PluginName.component" --timestamp

      Build Installer

      Sign Installer
      productsign --sign "Developer ID Installer: YOURTEAMID" "MacHD/User/Desktop/PluginName.pkg" "MacHD/User/Desktop/Signed/PluginName.pkg"

      Notarize Installer
      xcrun notarytool submit --apple-id "YOURAPPLEID" --password "App-Specific-Password" --team-id "YOURTEAMID" "MacHD/User/Desktop/Signed/PluginName.pkg"

      Wait For Upload To Complete

      Staple Installer
      xcrun stapler staple "MacHD/User/Desktop/Signed/PluginName.pkg"

      Check Status (Accepted)
      spctl --assess -vvv --type install "MacHD/User/Desktop/Signed/PluginName.pkg"

      FYI: Just a tip coming from the altool manual notarizing. I used to have to enter my TEAMID including my name like "My Name (GD78YHD87G)" but with the notarytool, it seems you just need the actual TEAMID Number, not the name as well.

      Also, I dont think this way sends the Notarization Email Confirmation. I did a fairly small upload a while ago and have yet to receive it. I've had it take hours before, but for a much larger file. Typically it sent the email within 10 or so minutes with altool. (it does not send the email. Once the upload is complete, youre good to go).

      posted in General Questions
      soundsyncS
      soundsync
    • RE: Notarisation for dummies

      All hail @orange

      posted in General Questions
      soundsyncS
      soundsync
    • RE: control.Timer crashing plugin in DAW

      @trillbilly If anyone hits the same problem, I got around it by using a tempo-synced ramp and a couple compare nodes to simulate the timers engagement.

      Simple and works.

      336f515f-ea93-490f-9e7b-57a63772fade-image.png

      posted in ScriptNode
      soundsyncS
      soundsync
    • RE: Preset Crashes DAW

      @Lindon @d-healey @Dan-Korneff @Matt_SF @DanH I did another rebuild and managed to get things saving correctly (so it seems). I messed with a few settings and properties so Im not 100% sure what it was but it's working so thats that. I appreciate all the help and input fellers!

      posted in General Questions
      soundsyncS
      soundsync
    • RE: Making a Simple Rompler?

      @daniel89ep Ya, @d-healey videos are great. I think this is with a Sound Generator but essentially you do the same with the Sampler.

      https://www.youtube.com/watch?v=2C4psWqleRs

      posted in General Questions
      soundsyncS
      soundsync
    • RE: Sample Editor Functions + UI Control

      I dug the forum again and found a little trick about naming the Sampler for instances of 2 const var calls.

      Im horrible with scripting and new to this so excuse the shitty code, but hey, it did the job! Here is the code if anybody wants to try it out. It allows you to control the editing functions of the sampler (Loop Enable, Reverse, Loop Start/Stop, etc).

      HISE SNIPPET:

      HiseSnippet 2171.3oc4Z0sbaabEFPRPIj1owIStn2jYvvoWPkQVgT1wtM+TSQJoLbhjLCorSlwMSxRfkjvFbWLKVpeZGOSeD56Pauu8MvOB8t9Z365ktm8G.rfBjBRwIwSKuQd28bN624Cm8bNXg6wnd33XJyxtxwmGgsruoyfyI7IclfBHVc20xtpyQ3Sc6P8wVsOOBEGi8srsW8KEqaWYMK4uW9f1nPDwCmMkk0ioAd3CBlFvylsWquJHLbejO93foFRe2Vc8njNzP5L.Kq5zvJB48LzX7QHgXq3XYu9d9AbJa.GwwwV1q0l5e9fIzSIJ4ebPbvvPrXPSqAfgTSuOMzWfXwrVclDD52Kwmisrrc5kw.qpXfOv4v.+fz4yXhaIWvMSCS9vdk7va0bvqoI7ZX.uBfjsAjVSAo2yYfGKHhmsh.O2voKgiYiPd4eznj0Zk+dUmNTPBBeqonmg2mACR0ndysazXS262nwFeV0pe7GOXmC6cvd8ca5t+iNpywce3QCpVEdjDycOAwbGflFEhYMc+BWY7wViwb8b0qkrXMsoTCAScasdt.qv3teEgNrZ.ILffcGMi3wCnDWJQIiTDAdYzv5dzoQTBf7MgcObFdip+optvuQTV8X2.RJd1xigABe.NDKMW8Za8Q01XCovJUD+BodnP2P.7QHVLFHg5wBOnt1Lao96dD+M.WHQq3shufHRTpAk6G4FpE+4UeN35IrMX4NINPB6HUr1FBSpcxNnvvgPPd8hXfExj.FWNOBB7FOKBhjwgau8u6N2+dklHAcWNMlQ.WjDOfRiVdvnPhKMTrhfAQWWFjYxfnKmAQ4XvT.lwfrRPdopsHxadGeAj2Rh+Dq+lczmFgWsyuZkVFucogbeqnh2x3Mo.ugybRLd04NoZKi8L88EF0gfhm9tsmw4TR0EPhpUuzCt+xPgM0QeRG4pyhJeaYzXNuWvi.QJDws1oPk+w0RbYQXj9eeHJJtfh74pxKaPQN5BE5ikCml2HwoVVXEM8j1s.L+AAw75JC.OhFRGROykP43O00a5PPGBzwmKcjaxhW.fwJ4VVQBgHBPlMR9nnV.GOMt1lFfbqmRCfG5+AfZUX5HITR3pL3nmYg0cEaxRC8RiCBoH+T1ndFTdhT1a276.fbYUAUN3xJCZfGgiYfWgG9PRcInp97ptyuznQEtl1XhN9JZYQ+7rkoXcxroCwLSJQHHzja9NmcVbmylM16oXGCAojtj.9CivjE0tuklRgtrqnQEHJW1i8uR2i8fv.eLyJ.Zk9cbLZLyRBay2uwpDl3FNo0Uyaf+8e8EOnLFnhit.y7p+udP42eYF1R3.2RafNhidsomIMwMcxBnl2FubwfPkNRZg20oO9DLj2TOW4YxbF4gDL7zl+iwH2zIKS4UvWxQnoo5Kv.Op6tHNR7Rb5HMH5KBy3Ah.a6cwm.uQr5U5p3rKN9YbZD7F1omtgf+RFLdV111s04oC9yOtEGeFWZ.i27RvMkXKLCVWvF7hg5MPwjEX90KQnblwew3hLdUmjdMs7wiPyB4OtfmUk1iTg+KviZ8z7djR3BL+ke3vXGNxXGrtaKYcGK62xoMh7TZNqeCt9VGTVeen5.OfL93.HkmJt2bpllahkkA2wZoC4TwWuqSOFFJOzlQOMFXigiStbkJqCh+eD5HPU1r+yW8WdU9Y2VKr7mLvdkudEGQWQ0DocGfNQeht1m5xYyvalrxdmEgHwP1+3chASMapPhQnv3LQj2KCqX0EUghufFhpDJ4iMUHaZnvE3vvZMajpzN99EuG8whB6Eu1tPyf7Er19nSnLfhDWWk4ZZj0EbaebaJCbtbdvQylpXBA3aJmRM9aB74S5COfovBOQ1KXistyb+17JNOL82I2CQyV6.c3lxM5cXyh9SpVJj0mdZOjuOD4UV8FfQLuIsQr1zYDegm9D0BIrlhkLVs5ysNUP.voL6+lsk0Dbv3Ihyb1qYak6bxaU5xKYmP9gyLyM9D8A8JIxaEkzaPWeQRmjNzrfl7gfCNVOuVb+b3oRoqTsH770sztdx44enUh6mLymmlPDLoqvlkCyURfvxx7un5hK.uV+dMXVWJbIS5aVu7LyjtETzJIY5xS7ewqG8VNGR8mEh34usVwUTqW.REk6JREWCJbRketokm+JbWqbWg6xug4xB22yoW.2aRw3ckBvKzjwO03Ueg3uiydiFAucbFXWyY+uco298qcn7gJn79NC3P1roPNIcfu9aTjdL30v2nHpzeiBnDq7k4B9iFh8hVsmA7EK+r+iVxsZmoPtub6kF48wQXD+PwmYIcw2tU+9eIiNKZdsd4CjAKGyfW3CnByERN2a3icXz33Qf6HsUr4R8lwFK3prYRy0YLmn10DDgfCEudlsHw7ihEMhxC7NDwYA45IQtKMNFIeduhiZby4Fu8biuybiu6bi+j4Feu4Fe+rwouZsHxHoiq4eIyJk6kLAqzCA9sgjsCFmtCpYLihS4ZIdL97TeCzrzHJapgkFf4h15hMlpfOGz5+T8Ep9YM81O9rwud9fZURv3f.UUoSfSvvLBL99vqjIq4jLa9rIGRIznITRfW9yKP7+3wXlI1Kzg1gygiqYy7As5C8YhhMNv+aZcP.A5gJeZfqDWz7J+wEK740u1QAWWQJP2+2nJ5p+eeUzkQcyciAuY+b9lNxr9tx2U+WHn1mNSj9No.nCTkb.zYfG1rV4Jh5upwMDiE.Z.l3KG7J3mdwlIEVEK1LYQKuDSA9l9eKeOb6UwpOjfn4vPnjcnYHcLz+g.RPwveVP4TjGi98dpKOSf02VNCfRh7+8FUbNTL1sYxMl43zXqFVSgZUeumm3fvsAFtXc19ZnyctF5b2qgNex0Pm6cMz49WCc9sKUGQaB6LiSmpRRBSzaOUfk8doAVqZ8eY0VljD
      

      SCRIPT:

      Content.makeFrontInterface(1200, 700);
      
      //SAMPLER 1 FUNCTIONS
      
      const var Sampler1 = Synth.getSampler("Sampler1");
      
      //Sampler 1 - Sample Start Knob
      inline function onSampleStartControl(component, value)
      {
          for(s in Sampler1.createSelection(".*"))
          {
              local l = parseInt(s.get(Sampler.SampleEnd));
              s.set(Sampler.SampleStart, value * l);
          }
      };
      
      Content.getComponent("SampleStart").setControlCallback(onSampleStartControl);
      
      //Sampler 1 - Sample End Knob
      inline function onSampleEndControl(component, value)
      {
          for(s in Sampler1.createSelection(".*"))
          {
              local l = parseInt(s.get(Sampler.SampleEnd));
              s.set(Sampler.SampleEnd, value * 229376);
          }
      };
      
      Content.getComponent("SampleEnd").setControlCallback(onSampleEndControl);
      
      //Sampler 1 - Loop Start Knob
      inline function onLoopStartControl(component, value)
      {
      	for(a in Sampler1.createSelection(".*"))
          {
              local r = parseInt(a.get(Sampler.SampleEnd));
              a.set(Sampler.LoopStart, value * r);
          }
      };
      
      Content.getComponent("LoopStart").setControlCallback(onLoopStartControl);
      
      //Sampler 1 - Loop End Knob
      inline function onLoopEndControl(component, value)
      {
          for(s in Sampler1.createSelection(".*"))
          {
              local l = parseInt(s.get(Sampler.SampleEnd));
              s.set(Sampler.LoopEnd, value * l);
          }
      };
      
      Content.getComponent("LoopEnd").setControlCallback(onLoopEndControl);
      
      //Sampler 1 - Loop XFade Knob
      inline function onLoopXFadeControl(component, value)
      {
          for(s in Sampler1.createSelection(".*"))
          {
              local l = parseInt(s.get(Sampler.SampleEnd));
              s.set(Sampler.LoopXFade, value * l);
          }
      };
      
      Content.getComponent("LoopXFade").setControlCallback(onLoopXFadeControl);
      
      //Sampler 1 - Loop Enabled Button
      
      inline function onLoopButtonControl(component, value)
      {
      	for(s in Sampler1.createSelection(".*"))
          {
              local l = parseInt(s.get(Sampler.SampleEnd));
              s.set(Sampler1.LoopEnabled, value * l);
          }
      };
      
      Content.getComponent("LoopButton").setControlCallback(onLoopButtonControl);
      
      
      //Call "wrong" Sampler for SampleMaps
      const var Sampler11 = Synth.getChildSynth("Sampler1");
      
      //samplemaps
      const var sampleMaps = Sampler.getSampleMapList();
      
      //combobox note: cmb = name of combobox
      const var Samplescmb = Content.getComponent("Samplescmb");
      Samplescmb.set("items", sampleMaps.join("\n"));
      
      //Note: Sampler = name of Sampler
      inline function onSamplescmbControl(component, value)
      {
      	Sampler1.loadSampleMap(sampleMaps[value-1]);
      };
      
      Content.getComponent("Samplescmb").setControlCallback(onSamplescmbControl);
      
      
      
      posted in General Questions
      soundsyncS
      soundsync

    Latest posts made by soundsync

    • RE: Payment providers compared

      @David-Healey I've tried getting SES for over a year now with no luck, they deny every time.

      How did you manage to get it?

      If I could get them, I could reduce Soundsync marketing email pricing by nearly 50%.

      posted in General Questions
      soundsyncS
      soundsync
    • RE: The gap between finishing a plugin and running a plugin business

      @dannytaurus A bit of a rigamarole but I'm biased lol.

      @cartemtune I'd open it up. As David said, Japan & Australia have a good market, about 15% of my sales are these 2 places.

      posted in General Questions
      soundsyncS
      soundsync
    • RE: The gap between finishing a plugin and running a plugin business

      @dannytaurus What do you mean by reseller terms?

      posted in General Questions
      soundsyncS
      soundsync
    • RE: The gap between finishing a plugin and running a plugin business

      @dannytaurus ahhh I see now, I misunderstood the statement.

      posted in General Questions
      soundsyncS
      soundsync
    • RE: Could someone help me compile my vst3 plugin that was made in hise on windows for macOS?

      @David-Healey @griffinboy I use Actions to compile Apple plugins with no problems. Some are fairly large projects as well.

      posted in General Questions
      soundsyncS
      soundsync
    • RE: The gap between finishing a plugin and running a plugin business

      @cartemtune Does it prevent you from using the platform once the cap is reached?

      posted in General Questions
      soundsyncS
      soundsync
    • Why you should plan for support before launch.

      Hey Gang,

      Planning how your plugin business handles licensing, logging, customer accounts, purchases, activations, updates, and product management can prevent many support requests before they happen.

      It also gives you the information and tools you need when a customer does need help.

      A few things worth planning early:

      • A reliable licensing system that handles activation, restoration, device limits, and offline use.
      • A logging system that records useful technical information without collecting the customer’s creative data.
      • A customer-management system that connects purchases, products, licenses, downloads, and support history.
      • A solid checkout and order system for failed payments, duplicate purchases, refunds, receipts, chargebacks, and missing orders.
      • A clear Merchant of Record or payment-processing setup so tax, billing, refunds, and customer responsibilities are properly defined.
      • Self-service tools for resetting activations, managing devices, finding receipts, and downloading products again.
      • A clear way to identify the installed plugin version and whether an update is available.
      • Useful error messages that explain what happened instead of only saying something failed.
      • A simple way for customers to send relevant diagnostic information with a support request.
      • A plan for server outages, expired subscriptions, refunded purchases, and other unusual situations.

      Purchase issues can create just as much support work as technical problems. A customer may have been charged but not received access, used a different email at checkout, purchased the wrong product, or lost their receipt. If orders, customer accounts, product access, and licensing are disconnected, resolving a simple issue can require searching through several systems.

      When everything is connected, support becomes much easier.

      If someone changes computers, they can reset an old activation themselves. If a customer reports a problem, you can quickly see what they purchased, which version they are using, and whether their license is active. If a payment or fulfillment problem occurs, you can trace the order and restore access without manually piecing everything together.

      Good customer service is not only about responding quickly. It is also about building systems that prevent confusion and give both the customer and developer useful options when something goes wrong.

      This is one of the areas we are working on with SoundSync: connecting commerce, customer accounts, licensing, activations, downloads, product versions, communication, and support information in one system.

      The goal is to reduce preventable support requests while making the requests that do happen much easier to understand and quicker to resolve.

      posted in General Questions support launch licensing copy protection
      soundsyncS
      soundsync
    • RE: Using customer data to grow a plugin business

      @dannytaurus SoundSync can currently receive information related to the product’s operation and the customer journey, including:

      • When the plugin is opened or connects to SoundSync
      • Activation, validation, restoration, and deactivation activity
      • The installed plugin version
      • The product and license associated with the activation
      • A hashed installation/device identifier for managing activations
      • Interactions with SoundSync-provided areas such as activation, account, store, support, and update interfaces
      • Timestamps showing recent validation or connection activity

      This can be combined with information already created elsewhere in SoundSync, such as purchases, products owned, downloads, customer accounts, support activity, email engagement, and marketing consent.

      That makes practical things possible. For example, a developer could notify customers using an outdated version, help somebody who purchased but never activated, exclude existing owners from a promotion, or create a re-engagement flow based on meaningful customer activity, cart recovery, etc, etc.

      SoundSync does not inspect or collect the customer’s audio, MIDI, presets, parameter changes, DAW projects, filenames, or what they are creating. We are interested in product lifecycle events that help with licensing, updates, support, and relevant communication, not the customer’s creative activity.

      We also try to keep the principle fairly simple, collect the minimum information needed for the feature, be clear about how it is used, and give developers the controls they need to handle consent and privacy properly.

      Some of this varies by integration. For example, the HISE package can report plugin-open and SoundSync interface events, while licensing integrations naturally generate activation and validation events whenever they communicate with SoundSync.

      posted in General Questions
      soundsyncS
      soundsync
    • Using customer data to grow a plugin business

      Hey Gang,

      Just wanted to drop in with a post I thought some might find useful.

      When someone buys and uses a plugin, useful information is created across the store, licensing system, email platform, and the plugin itself.

      Connecting that information makes marketing & servicing much more useful. Instead of sending the same emails to everyone, developers can create:

      • Marketing emails: Send product announcements, educational content, updates, and offers to the appropriate customers.
      • Growth flows: Automate cart recovery, post-purchase follow-ups, review requests, customer rewards, upgrade campaigns, and re-engagement emails.
      • Segmentation: Group customers by products owned, purchase history, license status, activation activity, installed version, or engagement.
      • Personalization: Adjust email content and offers based on what each customer owns and how they interact with the product.
      • Cross-selling: Recommend compatible expansions, sound packs, or related plugins while excluding customers who already own them.
      • Customer retention: Identify inactive customers and send relevant education, updates, or incentives to bring them back.
      • Product updates: Notify only the customers affected by a release, compatibility change, or important fix.
      • Analytics: Connect campaigns to purchases, activations, product use, reviews, and repeat sales instead of measuring email clicks alone.

      This is especially useful for smaller plugin companies because these tasks can run automatically instead of requiring someone to manually manage lists and customer records.

      It is not about collecting every possible piece of information. It is about making the information you already have useful. Purchase, license, activation, and product data can help make emails & servicing more relevant and show what is actually helping the business grow.

      This is one of the larger ideas behind SoundSync. We are connecting the store, customer accounts, licensing, plugin activity, marketing emails, growth flows, and analytics so developers can manage the customer journey from one connected system.

      posted in General Questions sell plugins customers growth licensing
      soundsyncS
      soundsync
    • RE: The gap between finishing a plugin and running a plugin business

      @dannytaurus Including the email marketing is a pretty smooth move. Does the % fluctuate at all based on usage, number of contacts, emails sent, etc.? Or a minimum monthly in sales?

      I've seen Gumroad around but never used it. I went straight from the wacky world of Wordpress to developing and using Soundsync.

      Is your reason for no licenses just less user friction?

      I'd love to see the comparison in price! That's the type of thing that tickles my pickle.

      posted in General Questions
      soundsyncS
      soundsync