Skip to content
Carlos Guzman

VDC Plugins for Revit

A commercial suite of about 10 Revit add-ins for construction teams, and the licensing and subscription system behind it.

VDC Plugins: add-in, licensing gate and subscriptionsThe storefront offers a free trial and the installer download. Every Revit add-in runs a shared per-tool licensing gate that blocks unless access is confirmed. The gate checks the tool's slug in the plugin registry against Stripe organisation and personal subscriptions, which webhooks keep current by subscription ID.Storefrontfree trial · installer downloadRevit add-inC# · .NET 8 · Revit 2025–2026Licensing gateblocks unless access is confirmedPlugin slug registryone slug per toolStripe subscriptionsorganisation and personalStripe webhookslifecycle by subscription ID
Fig. 1 — The add-in suite and its web side: every tool passes the licensing gate.

Problem

VDC Plugins is sold by subscription, so two things have to work together: tools that run reliably inside Revit, and a licensing system that only lets users with access in.

My role

I'm the lead developer of the add-in suite, and I contribute to UtahBIM's subscription app and storefront. I work with UtahBIM as a contractor through Upwork.

Approach

  • Add-ins. About 10 tools in C# on .NET 8, for Revit 2025 and 2026, shipped in one Inno Setup installer.
  • Licensing gate. Every tool goes through a shared per-tool gate that blocks unless access is confirmed. Tools from another developer were brought onto the same structure and gate, with fixes along the way.
  • Ports and rules. Logic that lived in Dynamo and Python was ported to C#. Slope checks follow IPC Table 704.1, with the tolerance documented.
  • Web side. Each plugin has a slug in a registry. Stripe handles organisation and personal subscriptions, and webhooks follow each subscription's lifecycle by its ID, which closed gaps where access had leaked. The storefront has a free-trial flow and installer downloads, and deploys with Docker and Prisma.
The vdcplugins.com home page, with buttons to browse the plugins and start a free trial.
Fig. 2 — The vdcplugins.com storefront, where the free trial starts.

GatedExternalCommand.cs

public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
    AccessDecision decision;
    try
    {
        decision = TheToolkitGate.Evaluate(AppSlug, commandData.Application.MainWindowHandle);
    }
    catch (Exception ex)
    {
        // Anything unexpected inside the gate blocks the command (fail closed).
        decision = AccessDecision.Blocked("The license check failed unexpectedly.\n\n" + ex.Message);
    }
 
    if (decision.Outcome != GateOutcome.Allowed)
    {
        TheToolkitGate.ExplainDecision(decision, CommandDisplayName);
        message = decision.ShortSummary(CommandDisplayName);
        return Result.Cancelled;
    }
 
    return ExecuteCommand(commandData, ref message, elements);
}
The shared gate every command passes through: anything unexpected blocks the tool.

Outcome

VDC Plugins is a commercial product, sold at vdcplugins.com.

Code walkthrough available on request.