Showing results for 
Search instead for 
Do you mean 

ACT! Plugin development FAQ

Nickel Elite Contributor
Posts: 937
Country: USA

ACT! Plugin development FAQ

What is an ACT! Plugin?
  • Any .NET assembly that implements ACT’s plugin interface(s) is technically an ACT! plugin
  • Plugins typically add or enhance functionality in the windows or web editions of ACT!
  • Plugins can be added to ACT! without the need for any changes to ACT! assemblies themselves
  • You already have what you need to begin development of plugins when you install ACT!
  • The only limitation of what can be done is your imagination, technical abilities, and anything we specifically restricted for security or stability purposes.

Where do plugins go?
  • Windows: <C:\Program Files\ACT\Act for Windows\Plugins>
  • (Note: C:\ is simply the drive installed, could be d:\, e:\, etc )

    Web: <C:\Program Files\ACT\Act for Web\APFW\Plugins>
    (Note: C:\ is simply the drive installed ON THE SERVER, could be d:\, e:\, etc )

Can I write one plugin that works for ACT! Windows and Web?
  •  YES – But it must be deployed in different locations as stated above *AND* the interfaces it implements are slightly different.
 How can I tell if a plugin failed too load?
  • It failed if the name of the assembly is in this Look here: 
"C:\Users\bmowka\AppData\Roaming\ACT\ACT For Windows\DependentDlls.xml“ (Where OS username is bmowka)
Also, if you have log level=3 your log file will NOT get a message "[Plugins] Plugin {your plugin name here} loaded"
 If my plugin failed to load how can I correct this?
  • Easiest method is to delete the dependentdlls.xml file and launch ACT! again (for ACT! web, IIS restart required) 
Where do I put any dependent assemblies that my Plugin assembly requires to be available?
  • You can put them in the plugins folder or the Global Assembly Cache 
 Will my plugin work on the next version of ACT!?
  • Yes, with the following exceptions.
    • A method you are dependent on has been changed/moved/removed.
    • We try to avoid this at all costs, but there are circumstances where we have had to do this – Ex: The redesign of the opportunities functionality made some methods unnecessary and had no logical way to be implemented in updated design/implementation.
    • Also, we try and give one year warning if we plan on removing methods by marking the method [obsolete].
How does ACT! know what assemblies are plugins? 
  • It simply loops through all the assembly files in the Plugins directory and probes the assembly to see if it implements the following interface:
    • Act.UI.IPlugin (For windows)
    • Act.Web.Framework.IWebPlugin (For web)
 When do plugins get loaded in ACT!?
  • They get loaded early in startup – BEFORE – any logon has begun

When do they get unloaded?
  • Only during the shutdown of ACT! (Not when you logoff a database)
How do I get access to the UI and Framework in a Plugin?
  • Windows
    • When a Plugin is loaded it ACT! Will immediately call the Plugin’s interface method “OnLoad”
    • void OnLoad(ActApplication actApp);
      • The object actApp can access both UI and Framework
  • Web 
    • When a Plugin is loaded ACT! Will immediately call the Plugin’s interface method “Init”
    • void Init(ACTSessionManager session);
      • The object session has direct access to the Framework (UI can be done directly with various ACTSessionManager functions.)  
        • Example: Adding a tab to contact detail view… (You write ServeCustomTab) session.LayoutTabs.AddCustomTabProvider(LayoutType.Contacts, new Act.Web.Framework.CustomTabProvider(this.ServeCustomTab));
Copper Contributor
Posts: 14
Country: USA

Re: ACT! Plugin development FAQ

I believe that you need to be using  a .net framework 3.5 or older (I could not get Act! 2011 to recignize my plugin until I changed from .net framework 4.0 to .net framework 3.5

New Member
Posts: 2
Country: Israel

Re: ACT! Plugin development FAQ



I have imported the right DLLs I guess and my code looks like this:


Imports System.Windows.Forms
Imports Act.UI

Public Class Class1
    Implements Act.UI.IPlugin

    Sub OnLoad(ActApp As ActApplication)

    End Sub
End Class


But I always get the error of:


Class1 must implement 'OnLoad(actApp As ActApplication)' for interface Act.UI.IPlugin


What have I done wrong ?



Posts: 1,163
Country: USA

Re: ACT! Plugin development FAQ

OnLoad is a required method if your class is implementing Act.UI.Plugin, it's also a good place to instantiate Before and AfterLogOn. Included in the SDK documenation is a sample plugin that you can reference.

Matthew Wood
Act! SDK Support
Community Moderator
Astute Commentator
Posts: 197
Country: United States

Re: ACT! Plugin development FAQ



Thank you for the insight on the Plugin. Now, once the plugin is loaded, do you have examples on how to access a form's elements i.e. the labels? What if you want to trap the phone label click event? Or even change the phone label to be a button?



New Member
Posts: 1
Country: France

Re: ACT! Plugin development FAQ


je suis développeur français, je voudrais développer de nouveaux modules en utilisant les apis Act.

Je ne sais pas comment faire, pourriez vous m'aider sv?